题解
定义 \(dp[i]\) 为今天有 \(i\) 元钱花时,明天卖能纯赚多少钱(这里有一个递归的思想,不需要考虑 \(dp[k-a[i][j]]\) 能否买得起今天的产品)
如果 \(dp[i-1]=k\) 那么 \(dp[i]\geq 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;
}
标签:P5662,int,J2019,CSP,dp,105
From: https://www.cnblogs.com/pure4knowledge/p/18211663