P2938 [USACO09FEB] Stock Market G

原题链接

题解

1.每一天只有二种决策,第一是不买,第二是当天买过几天抛
第二种决策等价于当天买入第二天抛,原理如下
对于一只股票,我们在第 i 天买第 j 天卖,其效果可以被看为在第 i 天买,第 k 天卖 𝑖𝑘𝑗,当天再买回来,第 j 天卖。
2.要使赚钱最多,等价于赚的钱大于花的钱,因此,可以把花出去的钱看成体积,能赚多少钱看成价值,最多剩余的钱是容量

code

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

int a[55][15]={0},dp[5000000]={0};//dp的含义是最多花i元,最多可以挣回多少元,起码是i,因为可以不花
int main()
{
    int s,d,m;

    cin>>s>>d>>m;

    for(int i=1;i<=s;i++)
    {
        for(int j=1;j<=d;j++) cin>>a[i][j];
    }

    int maxm=m;
    for(int i=2;i<=d;i++)
    {
        int add=0;
        for(int i=1;i<=maxm;i++) dp[i]=i;//前一天留下来的不花
        for(int j=1;j<=s;j++)
        {
            for(int k=a[j][i-1];k<=maxm;k++)//这里从小到大遍历,原因是可以多买; 这里的k是指花出去多少钱,maxm是指昨天最多赚了多少钱
            {
                dp[k]=max(dp[k],dp[k-a[j][i-1]]+a[j][i]);
                add=max(dp[k]-maxm,add);
            }
        }
        maxm+=add;
    }
    cout<<maxm;
    return 0;
}

posted @   纯粹的  阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示