ac代码(0-1背包模板题)
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=12885;
int dp[N];
int wi[3405];
int di[3405];
int main(){
int n,m;
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++){
scanf("%d%d",&wi[i],&di[i]);
}
memset(dp,0,sizeof(dp));
for(int i=0;i<n;i++){
for(int j=m;j>=wi[i];j--){
dp[j]=max(dp[j],dp[j-wi[i]]+di[i]); //关键决策:在放与不放中选择最优方案
}
}
printf("%d\n",dp[m]);
return 0;
}