求教一下为什么不能这样写啊

P1048 [NOIP2005 普及组] 采药

把第二层循环倒过来
by star_magic_young @ 2018-07-09 20:59:55


@[star_magic_young](/space/show?uid=38372) 我这个开了两维的数组,所以顺序无所谓,改成这样就可以过了 ``` for(int i=1; i<=M; i++) for(int j=0; j<=T; j++){ f[i][j]=f[i-1][j]; if(j-v[i]>=0) f[i][j]=max(f[i-1][j], f[i-1][j-v[i]]+w[i]); } ```
by Ichigaya_Arisa @ 2018-07-09 21:03:56


差不多@[Ichigaya_Arisa](/space/show?uid=70850)
by star_magic_young @ 2018-07-09 21:09:18


@[Ichigaya_Arisa](/space/show?uid=70850) j + v[i] > T 导致访问到野指针。。应该是re或者tle或者其他的。。
by moye到碗里来 @ 2018-07-09 21:11:08


或者wa。。因为覆盖到了之后的内存空间。。
by moye到碗里来 @ 2018-07-09 21:13:01


@[moye到碗里来](/space/show?uid=52576) 实际上的话样例都过不了,按样例是访问不到野指针的
by Ichigaya_Arisa @ 2018-07-09 21:15:15


@[Ichigaya_Arisa](/space/show?uid=70850) 那这个可能是初值的问题。。我也不清楚了。。我觉得改成 ``` if(j + v[i] <= 0) f[i][j + v[i]]=max(f[i-1][j + v[i]], f[i - 1][j] + w[i]); ``` 也能过阿。。
by moye到碗里来 @ 2018-07-09 21:21:13


<= T
by moye到碗里来 @ 2018-07-09 21:21:32


@[moye到碗里来](/space/show?uid=52576) 然而事实上这样写过不了TAT,这道题的话怎么输出都会是0,那个gift的话能过前30分的点
by Ichigaya_Arisa @ 2018-07-09 21:30:32


@[Ichigaya_Arisa](/space/show?uid=70850) 我写一个你看看呢。。
by moye到碗里来 @ 2018-07-09 21:31:07


| 下一页