P5662 [CSP-J2019] 纪念品

原题链接

题解

定义 dp[i] 为今天有 i 元钱花时,明天卖能纯赚多少钱(这里有一个递归的思想,不需要考虑 dp[ka[i][j]] 能否买得起今天的产品)
如果 dp[i1]=k 那么 dp[i]k ,所以存在一个 i 使得钱全部花完然后赚 k

code

#include<bits/stdc++.h>
using namespace std;
int dp[10005]={0};
int a[105][105];
int main()
{
    int t,n,m;
    cin>>t>>n>>m;

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

    int maxs=m;
    for(int i=1;i<t;i++)
    {
        memset(dp,0,sizeof dp);
        int add=0;
        for(int j=1;j<=n;j++)
        {
            for(int k=a[i][j];k<=maxs;k++)
            {
                dp[k]=max(dp[k],dp[k-a[i][j]]+a[i+1][j]-a[i][j]);
                add=max(add,dp[k]);
            }
        }
        maxs+=add;
    }

    cout<<maxs;
    return 0;
}

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