用二进制表示每一格的情况,然后必胜态和必败态需要相互转换。
直接状压,时间复杂度 $O(2^nn^2)$。
$dp_{f,st}$ 表示某一方取,状态为 $st$ 时的赢家,由于涉及两方与牌堆,所以用三进制进行状压。放个核心代码:
1 | int get (int nw,int p) {return nw / pw[p] % 3;} |
用二进制表示每一格的情况,然后必胜态和必败态需要相互转换。
直接状压,时间复杂度 $O(2^nn^2)$。
$dp_{f,st}$ 表示某一方取,状态为 $st$ 时的赢家,由于涉及两方与牌堆,所以用三进制进行状压。放个核心代码:
1 | int get (int nw,int p) {return nw / pw[p] % 3;} |