如题。请求管理本题有关 DP 的题解。
实际上如果从无后效性的角度出发,设 f[step][a][b][x][y] 为 「两个人各走 step 步,第一个人走到 (a,b),第二个人走到 (x,y),能获取的最大价值」。方程为:f[step][a][b][x][y]=benefit+max{f[step−1][a−1][b][x−1][y]+...}。
该转移方程符合 DP 的无后效性,且「每人各走一步」的正确性显然,且能保证每个数只取一次(这里不过多阐述)。但可用滚动数组滚掉 step,于是得第二篇题解中的转移方程。
许多题解没讲清楚,容易误导初学者,也没有让初学者注意“无后效性”。
我不信一个刚学采药的初学者能在题解没讲明的情况下懂这些,我觉得初学者会“看题解只有两三行话和一个状态转移,就把它写进代码了”。
综上。