<USACO2009 gold>电视游戏问题の思路

emm今天模拟赛的题.神奇地A

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<iostream>
 4 #include<algorithm>
 5 using namespace std;
 6 int n,v,p,g,gp,pv;
 7 int dp[55][100010];
 8 int main(){
 9     int i,j,k;
10     //freopen("vidgame.in","r",stdin);
11     //freopen("vidgame.out","w",stdout);
12     scanf("%d%d",&n,&v);
13     memset(dp,0,sizeof(dp));
14     for(i=1;i<=n;i++)
15     {
16         scanf("%d%d",&p,&g);
17         for(j=p;j<=v;j++)dp[i][j]=dp[i-1][j-p];//买了i个平台剩下j元 (j-p)为买其他剩的钱 
18         for(j=1;j<=g;j++)//每种游戏 
19         {
20             scanf("%d%d",&gp,&pv);
21             for(k=v;k>=p+gp;k--) dp[i][k]=max(dp[i][k],dp[i][k-gp]+pv);//01
22         }
23         for(j=0;j<=v;j++) dp[i][j]=max(dp[i][j],dp[i-1][j]);//重新判断一次 
24     }
25     printf("%d",dp[n][v]);
26 return 0;
27 }

猜你喜欢

转载自www.cnblogs.com/pile8852/p/9280310.html