给题面点赞.
$move$
直接二分 + $hash$ .
$cook$
把反图建出来,跑一个最大字典序的拓扑序,再把这个序列反过来就是答案.
$block$
摘自原题的解题报告.
暴力来做的话,接口有 $12$ 个位置,状态数为$2^{12} = 4096$ .
这个状态维数显然不能矩阵乘法.
然后消掉所有等价的状态,即旋转,镜像,上下翻转.
比如 $100000000000$ 和 $000000000001$ 这两个的状态的 $dp$ 值,在每一轮都相等,不需要都存下来.
同样的,旋转,镜像,上下翻转都可以消除掉一些.
然后我们发现一些状态值一定是 $0$,比如接口有奇数个块的.
比如将所有块黑白染色,接口处黑色个数不等于白色个数的.
经过这些删除后,只剩下 $95$个状态.
然后直接矩阵乘法就可以了.