test20190910

给题面点赞.

$move$

直接二分 + $hash$ .

$cook$

把反图建出来,跑一个最大字典序的拓扑序,再把这个序列反过来就是答案.

$block$

摘自原题的解题报告.

暴力来做的话,接口有 $12$ 个位置,状态数为$2^{12} = 4096$ .

这个状态维数显然不能矩阵乘法.

然后消掉所有等价的状态,即旋转,镜像,上下翻转.

比如 $100000000000$ 和 $000000000001$ 这两个的状态的 $dp$ 值,在每一轮都相等,不需要都存下来.

同样的,旋转,镜像,上下翻转都可以消除掉一些.

然后我们发现一些状态值一定是 $0$,比如接口有奇数个块的.

比如将所有块黑白染色,接口处黑色个数不等于白色个数的.

经过这些删除后,只剩下 $95$个状态.

然后直接矩阵乘法就可以了.