<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;
}
点击查看丑陋の代码&注释

 

 

原文地址:https://www.cnblogs.com/pile8852/p/9280310.html