社区讨论
用二维dp数组为什么25WA
P5662[CSP-J 2019] 纪念品参与者 5已保存回复 5
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 5 条
- 当前快照
- 1 份
- 快照标识符
- @m0xg2mrq
- 此快照首次捕获于
- 2024/09/11 13:53 去年
- 此快照最后确认于
- 2025/11/04 21:24 4 个月前
25WA
CPP#include<bits/stdc++.h>
using namespace std;
int dp[105][10005],n,m,t,L,a[105][105];
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>t>>n>>m;
L=m;
for(int i=1;i<=t;++i)
{
for(int j=1;j<=n;++j)cin>>a[i][j];
}
for(int i=1;i<t;++i)
{
for(int j=1;j<=n;++j)
{
for(int k=0;k<=L;++k)
{
if(k>=a[i][j])dp[j][k]=max(dp[j][k],dp[j][k-a[i][j]]+a[i+1][j]-a[i][j]);
}
}
L+=dp[n][L];
memset(dp,0,sizeof(dp));
}
cout<<L;
return 0;
}
100AC
CPP#include<bits/stdc++.h>
using namespace std;
int dp[10005],n,m,t,L,a[105][105];
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>t>>n>>m;
L=m;
for(int i=1;i<=t;++i)
{
for(int j=1;j<=n;++j)cin>>a[i][j];
}
for(int i=1;i<=t;++i)
{
for(int j=1;j<=n;++j)
{
for(int k=0;k<=L;++k)
{
if(k>=a[i][j])dp[k]=max(dp[k],dp[k-a[i][j]]+a[i+1][j]-a[i][j]);
}
}
L+=dp[L];
memset(dp,0,sizeof(dp));
}
cout<<L;
return 0;
}
新手求原因T_T
回复
共 5 条回复,欢迎继续交流。
正在加载回复...