P1757 通天之分组背包

点击查看代码
#include<bits/stdc++.h>
using namespace std;

const int N=1010,M=1010;
int f[M];
int w[N][N],v[N][N];
int s[N];
int n,m;

int main()
{
    ios::sync_with_stdio(0),cin.tie(0);
    cin>>m>>n;

    int max_g=0;
    for(int i=1;i<=n;i++){
        int a,b,c;
        cin>>a>>b>>c;
        max_g=max(max_g,c);
        w[c][s[c]]=a;
        v[c][s[c]]=b;
        s[c]++;
    }

    for(int i=1;i<=max_g;i++){
        for(int j=m;j>=0;j--){
            for(int k=0;k<s[i];k++){
                if(j>=w[i][k]){
                    f[j]=max(f[j],f[j-w[i][k]]+v[i][k]);
                }
            }
        }
    }
    cout<<f[m]<<endl;
    
}
posted @ 2026-02-03 22:21  AnoSky  阅读(0)  评论(0)    收藏  举报