题解:P10360 [PA 2024] Desant 3
很妙的一道题。
首先我们肯定有一个 $O\left ( 2^n\operatorname{poly}\left ( n,m \right ) \right ) $ 的做法,但这无法通过 \(n \leq 35\)。
考虑把状态用 \(0,1,?\) 来表示,其中 \(?\) 表示这个士兵状态仍未决,接下来对操作进行分类讨论:
- \(x,y\) 都是 \(?\)。先设 \(x,y\) 不同,不难发现交换后只剩 \(x=0,y=1\) 的情况,由于答案对 \(2\) 取余,故这部分贡献一定是 \(0\)。再设 \(x,y\) 相同,此时递归到 \(x=1,y=1\) 和 \(x=0,y=0\) 分别解决。
- \(x,y\) 有一个是 \(?\)。经过如上类似的分类讨论后可以发现其后继状态也可以唯一地用 \(0,1,?\) 来表示,递归到对应状态解决即可。
- \(x,y\) 都不是 \(?\)。此时可以直接判断是否交换,后继状态也是唯一的。
由于只有第一种情况会递归到两个不同的状态,且每次这样的递归必定会去掉序列中的两个 \(?\),问号总数一共是 $\Theta \left (n \right ) $ 的,故总复杂度 $O \left ( 2^{\frac{n}{2} }\operatorname{poly}\left ( n,m \right ) \right ) $,可以通过。

浙公网安备 33010602011771号