震惊,第二个点错了!!

P1070 [NOIP2009 普及组] 道路游戏

~~以为是数据问题的我点了进来发现一只大佬又溜了出去~~
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


| 下一页