道路游戏
2023-05-02 17:51:02
发布于:浙江
12阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e3+30;
int dp[maxn],w[maxn];
int n,m,p;
int val[maxn][maxn];
int main()
{
scanf("%d%d%d",&n,&m,&p);
for(int i=1;i<=n;++i)
for(int j=1;j<=m;++j)
scanf("%d",&val[i][j]);
for(int i=1;i<=n;++i) scanf("%d",&w[i]);
for(int i=1;i<=m;++i) dp[i]=-1e9;
for(int i=1;i<=m;++i)
{
for(int j=1;j<=n;++j)
{
int ans=-w[j]+dp[i-1];
for(int k=0;k<p && i+k<=m;++k)
{
int t=j+k;
if(t>n) t=t%n;
ans+=val[t][i+k];
dp[i+k]=max(dp[i+k],ans);
}
}
}
printf("%d",dp[m]);
return 0;
}
这里空空如也
有帮助,赞一个