题目 → luogu1757
代码:
#include<iostream> #include<cstdio> using namespace std; int w[1007],v[1007],f[1007],zs[1007][1007],js; int n,m; int main() { int n,m; scanf("%d%d",&m,&n); for(int i=1,zb;i<=n;++i) { scanf("%d%d%d",v+i,w+i,&zb); zs[zb][0]++; zs[zb][zs[zb][0]]=i; js=max(js,zb); } for(int i=1;i<=js;++i) { for(int j=m;j>=0;--j) { for(int k=1;k<=zs[i][0];++k) { if(v[zs[i][k]]<=j) f[j]=max(f[j],f[j-v[zs[i][k]]]+w[zs[i][k]]); } } } cout<<f[m]; return 0; }