01背包问题:推荐资料《背包问题九讲》
#include <iostream>
using namespace std;
int cost,ans,val,n,V,f[12890];
int maxm(int a,int b){
if(a>b) return a;
return b;
}
int main(){
cin>>n>>V;
for(int i=0;i<n;i++){
cin>>cost>>val;
for(int v=V;v>=cost;v--){
f[v]=maxm(f[v],f[v-cost]+val);
ans=f[v]>ans?f[v]:ans;
}
}
cout<<ans<<endl;
}