超级蒟蒻求问滚动数组!!

P2704 [NOI2001] 炮兵阵地

丹妮莉丝 @ 2019-10-31 20:35:10

dp[p%3][i][j]=max(dp[p%3][i][j],dp[(p-1)%3][j][k]+num[i])

dp[i][j][k]表示第i行状态为j,上一行状态为k,为什么这样用滚动数组是对的????

比如dp[1][j][k]比dp[3][j][k]+num[j]要大,那么dp[1][j][k]的状态不变,到了dp[5]怎么转移??

(口齿不清)


by zyywzw @ 2019-10-31 20:43:22

实话实说,这道题没必要滚动数组


by 陷语 @ 2019-11-09 11:22:42

根据状态转移方程我们可以发现,第i行的状态只与与i - 1, i - 2行的转态有关,自然而然的我们只要对i取一下模就可以实现空间滚动使用了,虽然这道题可以不用滚动数组优化


|