校长的烦恼

但是我怎么判断一个人是否被选了多次呢?

如果能问出这个问题,就说明我们陷入了思维定式

我们以前的状态压缩都是以二进制状态为阶段进行DP,这里我们如果再这么做,就必须记录某一位求职者是否被选择了,那么时空复杂度根本无法承受

所以我们换个思路,直接以求职者为阶段,当一个背包做

讲一下为什么这种代码一个人不会选多次:因为或操作的结果会让\(i\)\(j\))增大(至少不变),而我们用的是刷表法,就相当于背包中体积更大被体积更小的更新,由于是倒序循环,所以可以保证每个人只被选择一次

说到刷表法,状态压缩里面很多时候刷表法比填表法更好写,所以以后可以多尝试写刷表法

另外,这道题目当然也可以用三进制状态压缩

posted @ 2024-01-29 20:28  最爱丁珰  阅读(1)  评论(0编辑  收藏  举报