2 条题解
-
0
#include<bits/stdc++.h> using namespace std; const int N=110, M=1e4+10; int f[M], a[N][N];//f[i]表示今天i个金币能换明天多少个金币 int main() { int t, n, m;scanf("%d%d%d", &t, &n, &m); for(int i=1;i<=t;i++) for(int j=1;j<=n;j++) scanf("%d", &a[i][j]); int ans=m; for(int i=1;i<t;i++) { memset(f, 0xc0, sizeof(f));//0xc0=-0x3f, 反码 f[ans]=ans; for(int j=1;j<=n;j++) for(int k=ans;k>=a[i][j];k--) f[k-a[i][j]]=max(f[k-a[i][j]], f[k]-a[i][j]+a[i+1][j]); int t=ans; for(int j=0;j<=t;j++) ans=max(ans, f[j]); } printf("%d\n", ans); return 0; } -
0
#include<bits/stdc++.h> using namespace std; const int N=110,M=1e4+10; int f[M],a[N][N];//f[i]表示今天i个金币能换明天多少个金币 int main() { int t,n,m;scanf("%d%d%d",&t,&n,&m); for(int i=1;i<=t;i++) for(int j=1;j<=n;j++) scanf("%d",&a[i][j]); int ans=m; for(int i=1;i<t;i++) { memset(f,0xc0,sizeof(f));//0xc0=-0x3f,反码 f[ans]=ans; for(int j=1;j<=n;j++) for(int k=ans;k>=a[i][j];k--) f[k-a[i][j]]=max(f[k-a[i][j]],f[k]-a[i][j]+a[i+1][j]); int t=ans; for(int j=0;j<=t;j++) ans=max(ans,f[j]); } printf("%d\n",ans); return 0; }
- 1
信息
- ID
- 1992
- 时间
- 1000ms
- 内存
- 250MiB
- 难度
- 6
- 标签
- 递交数
- 17
- 已通过
- 12
- 上传者