HDU 4508
祼的完全背包问题
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #define LL __int64 using namespace std; LL dp[100005]; struct Food{ int a,b; }fd[105]; int main(){ int n,m; while(scanf("%d",&n)!=EOF){ for(int i=1;i<=n;i++) scanf("%d%d",&fd[i].a,&fd[i].b); scanf("%d",&m); memset(dp,0,sizeof(dp)); LL ans=0; for(int k=1;k<=n;k++){ for(int i=0;i<=m-fd[k].b;i++){ dp[i+fd[k].b]=max(dp[i+fd[k].b],dp[i]+fd[k].a); ans=max(dp[i+fd[k].b],ans); } } printf("%I64d\n",ans); } return 0; }