WA on #8#9#10 可能的原因。
如果您和我都是设 f(j,0/1) 为已发射 j 颗子弹,先前是 (1) 否 (0) 取过末尾为 N 的一个物品,那么有一些坑点需要注意:
- 不要压维而应该滚动数组,而且滚动时不要清空而是拷贝(也可能是我太弱了)
- f(0,0) 应设为 −∞。
-
int tp=c[i][k]-c[i][k-1];
if(j+k-c[i][k]<=m){
tomax(g[0][j+k-c[i][k]],f[0][j]+a[i][k]);
tomax(g[tp][j+k-c[i][k]],f[0][j]+a[i][k]);
if(j+k-c[i][k-1]<=m)
tomax(g[tp][j+k-c[i][k]],f[1][j]+a[i][k]);
}
hack:
5 3 4
1 Y 5 Y 2 Y
3 N 1 Y 4 N
2 N 3 Y 2 N
1 N 2 Y 5 Y
1 N 2 Y 3 N
ans:
30
同时,这篇题解不能通过此题第11个点以及上面我提供的hack,请求修改或撤下题解。