学校食堂
这个看起来有后效性的DP挺神奇的,最后记住吧
主要是看到\(B_i\)太小了,所以可以想到状态压缩
但是其实我自己也想到一个状态
设\(f[i][j]\)表示当前打完饭的是前\(i\)个人和\(i\)后面状态为\(j\)的人,而且最后一个打饭的是\(i\)
就是没有像题解一样把最后一个打饭的人是谁给设出来,而是直接强制要求最后一个打饭的人是第\(i\)个人
感觉也能推走的,目前没有发现错误
update 2024.7.2
题解的状态转移方程当然也可以从填表法的角度做,而刷表法其实最好也是按照下一个给谁打饭这么刷表可以保证状态转移方程不漏,当然这样就会导致一个阶段只能刷本阶段之内的表,所以我们在刷表的时候,如果是将第\(i\)个人从没有打饭变成打了饭,就更新一下下一阶段的状态
题解中的状态当然可以设置为前\(i\)个人打完饭,以及后面状态为\(j\)(不包括\(i\))的人打完了饭的最优值