题目:Charm Bracelet
思路:裸的01背包……要用滚动数组。
代码:
#include<bits/stdc++.h>
using namespace std;
#define maxn 3500
#define maxm 12880
int m,n;
int w[maxn+5],c[maxn+5];
int f[maxm+5]={0};
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++){
scanf("%d%d",&w[i],&c[i]);
for(int j=m;j>=0;j--){
if(j-w[i]>=0) f[j]=max(f[j],f[j-w[i]]+c[i]);
}
}
printf("%d\n",f[m]);
return 0;
}