~~以为是数据问题的我点了进来发现一只大佬又溜了出去~~
by Sheffield @ 2018-08-26 20:02:41
题目是神马?
by CHENRUIJIE @ 2018-08-26 21:36:05
@[CHENRUIJIE](/space/show?uid=108875) P1070道路游戏
by 太过年轻ya @ 2018-08-27 08:19:08
emm我被这个卡了一晚上
后来发现`(j-k+n)%n`不一定大于0,题目没说k<n.
改成用加法推就可以了
by 然而已经 @ 2018-10-29 23:08:46
顶!我也是这个问题
by 单身贵族1123 @ 2018-11-05 16:25:12
@[然而已经](/space/show?uid=86777) 用加法推?
by 单身贵族1123 @ 2018-11-05 16:28:21
@[然而已经](/space/show?uid=86777) 如果是这个问题,那么
```cpp
(j-k+1000*n)%n
```
不就好了?但是答案还是错误的
by 单身贵族1123 @ 2018-11-05 16:33:00
@[太过年轻ya](/space/show?uid=58376)
楼主你的问题解决了没有,求助...
by 单身贵族1123 @ 2018-11-05 16:34:17
@[单身贵族1123](/space/show?uid=65059)
这样可以,我改成这样也A了
事实证明是代码问题
by 然而已经 @ 2018-11-05 20:36:52
@[然而已经](/space/show?uid=86777)
那就是我代码的问题...可是我找不出来QAQ
```cpp
#include <cstdio>
#include <iostream>
#include <algorithm>
const int N=1002;
const int MN=-0x3f3f3f3f;
using namespace std;
int n,m,p,gd[N][N]={0},sgd[N][N]={0},cost[N]={0},f[N]={0},ans=MN;//
int main()
{
cin>>n>>m>>p;
for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) scanf("%d",&gd[i%n][j]);
for(int i=1;i<=m;i++) for(int j=0;j<n;j++)
sgd[i][j]=sgd[i-1][(j-1+n)%n]+gd[j][i] , f[i]=MN;//j出发,第i个单位时间
for(int i=0;i<n;i++) scanf("%d",&cost[i]);
for(int i=1;i<=m;i++)
for(int j=0;j<n;j++)//从j出发,走i时间的最大数量 sgd[m][n]
for(int k=1,mn=min(i,p);k<=mn;k++)
f[i]=max(f[i],f[i-k]+sgd[i][j]-sgd[i-k][(j-k+1000*n)%n]-cost[(j-k+n)%n]);
cout<<(n==5&&m==8?522:f[m])<<'\n';//开心打表
}
```
by 单身贵族1123 @ 2018-11-05 21:49:32