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 @   纯粹的  阅读(21)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示