【USACO2009Feb】股票市场

题面

分析

其实,很容易想到是个DP啊

按每天来算,是N套完全背包,石头种类是种数,到前一天为止所得的钱是容量,物品两天的差价是价值

代码

 

#include<bits/stdc++.h>
using namespace std;

#define N 5001

int n,d,m;
int f[500003],price[60][30];

int main()
{
    scanf("%d%d%d",&n,&d,&m);
    
    for(int i=1;i<=n;i++)
        for(int j=1;j<=d;j++)
            scanf("%d",&price[i][j]);
    
    for(int k=1;k<d;k++)
    {
        memset(f,0,sizeof(f));
        for(int i=1;i<=n;i++)
        {
            int v=price[i][k+1]-price[i][k];
            for(int j=price[i][k];j<=m;j++) 
                f[j]=max(f[j],f[j-price[i][k]]+v);
        }
        m+=f[m];    
    }
    printf("%d",m); 
    return 0;
}

 



posted @ 2018-02-01 20:45  WJEMail  阅读(111)  评论(0编辑  收藏  举报