01超大背包模板(借鉴挑战,已进行内存优化)
const int maxn=105;
const int maxv=100;
int dp[maxn*maxv+1];
int t,n,c;
int w[maxn],v[maxn];
int main() {
sd(n);
sd(c);
for(int i=1;i<=n;i++) {
sd(w[i]);
sd(v[i]);
}
me(dp,INF);
dp[0]=0;
for(int i=1;i<=n;i++) {
for(int j=maxn*maxv-1;j>=v[i];j--) {
dp[j]=min(dp[j],dp[j-v[i]]+w[i]); //dp数组记录的是价值为j时的最小背包容量
}
}
int ans=0;
for(int i=maxn*maxv;i>=0;i--) if(dp[i]<=c) {
ans=i;
break;
}
pd(ans);
return 0;
}
上一道模板题:第十四届华中科技大学程序设计竞赛决赛F题
链接:https://www.nowcoder.com/acm/contest/119/F
来源:牛客网
直接套板子就行