P2150 [NOI2015] 寿司晚宴
写了两天。。。
就是说,状态压缩DP可以不用显示写出考虑到第i个数,直接每次考虑加入一个数会对当前状态造成的影响即可。
这道题发现了大质因数只有1个之后,就需要考虑有相同的大质因数之间的转移,和大质因数不同的之间的转移。
然后会发现没有大质因数的数需要特殊处理……
然后就好了……
调了好久……
原因在于不同大质因数之间转移的时候,没有清空g和w数组。
(g和w表示当前大质因数必须选,所以一开始肯定是0)。
调试的时候不要犹豫:
先写个小范围的状压出来。
把2作为小质因数,3、5作为大质因数。
然后会发现3、5之间的转移写错了。
不要怕麻烦,因为小质因数只有一个,状态只有0、1。
然后手写出来状态之间的更新关系,再和程序中进行比较。
这样大概1h以内就能发现没清空g和w。
这种状态设计比较好写: