社区讨论
求调
P1757通天之分组背包参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mknmf1xo
- 此快照首次捕获于
- 2026/01/21 14:07 2 个月前
- 此快照最后确认于
- 2026/01/21 14:07 2 个月前
CPP
#include <bits/stdc++.h>
using namespace std;
const int N=1005;
int w[N],v[N],dp[N];
int n,maxw;
int k[N][N];//k i j表示i小组中第j个物品的编号
int group[N];//group i表示小组i中的物品数
int t=-1;//小组数
int main(){
scanf("%d%d",&maxw,&n);
for(int i=1;i<=n;++i){
int x;
scanf("%d%d%d",&w[i],&v[i],&x);
++group[x];
t=max(t,x);
k[x][group[x]]=i;
}
for(int i=1;i<=t;++i){//枚举组数
for(int j=maxw;j>=0;--j){//枚举重量
for(int l=1;l<=group[i];++l){//枚举物品
if(j<w[k[i][l]])continue;
dp[j]=max(dp[j],dp[j-w[k[i][l]]]+v[k[i][l]]);
}
}
}
printf("%d",dp[n]);
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...