<USACO09DEC>视频游戏的麻烦Video Game Troublesの思路
emm今天模拟赛的题.神奇地A了
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; int n,v,p,g,gp,pv; int dp[55][100010]; int main(){ int i,j,k; //freopen("vidgame.in","r",stdin); //freopen("vidgame.out","w",stdout); scanf("%d%d",&n,&v); memset(dp,0,sizeof(dp)); for(i=1;i<=n;i++) { scanf("%d%d",&p,&g); for(j=p;j<=v;j++)dp[i][j]=dp[i-1][j-p];//买了i个平台剩下j元 (j-p)为买其他剩的钱 for(j=1;j<=g;j++)//每种游戏 { scanf("%d%d",&gp,&pv); for(k=v;k>=p+gp;k--) dp[i][k]=max(dp[i][k],dp[i][k-gp]+pv);//01 } for(j=0;j<=v;j++) dp[i][j]=max(dp[i][j],dp[i-1][j]);//重新判断一次 } printf("%d",dp[n][v]); return 0; }