そーすにっき

なんかいろいろのせておくばしょ

AOJ2502

http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2502

ボカロかな?()
解法:制限なしナップサック同様のDP 計算量謎
ナップサック問題の重さに幅があるというだけ
数の制約が小さいのでこれでOK

#include <iostream>
#include <vector>
 
using namespace std;
 
int main(){
    int n,m;
    cin >> n;
    int s,l,p;
    int w[400]={0,};
    for(int i=0;i<n;i++){
        cin >> s >> l >> p;
        for(int j=s;j<=l;j++){
            for(int k=0;k+j<=399;k++){
                w[k+j]=max(w[k+j],w[k]+p);
            }
        }
    }
    cin >> m;
    int d[m];
    bool ans = true;
    for(int i=0;i<m;i++){
        cin >> d[i];
        if(!w[d[i]])ans=false;
    }
    if(!ans)cout << -1 << endl;
    else{
        for(int i=0;i<m;i++){
            cout << w[d[i]] << endl;
        }
    }
}