Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
143389 | 吴悠 | 分组背包 | C++ | 通过 | 100 | 2 MS | 1424 KB | 514 | 2024-04-14 12:10:30 |
#include<iostream> using namespace std; int w[101][1001],v[101][1001],id[101]; int dp[101][1001]; int main(){ int m,n,a,b,c,cnt=0; cin>>m>>n; for(int i=1;i<=n;i++){ cin>>a>>b>>c; id[c]++; w[c][id[c]]=a; v[c][id[c]]=b; cnt=max(cnt,c); } for(int i=1;i<=cnt;i++){ for(int j=1;j<=m;j++){ dp[i][j]=dp[i-1][j]; for(int k=1;k<=id[i];k++){ if(j-w[i][k]>=0){ dp[i][j]=max(dp[i-1][j-w[i][k]]+v[i][k],dp[i][j]); } } } } cout<<dp[cnt][m]<<endl; return 0; }