题解:P10360 [PA 2024] Desant 3

很妙的一道题。

首先我们肯定有一个 $O\left ( 2^n\operatorname{poly}\left ( n,m \right ) \right ) $ 的做法,但这无法通过 \(n \leq 35\)

考虑把状态用 \(0,1,?\) 来表示,其中 \(?\) 表示这个士兵状态仍未决,接下来对操作进行分类讨论:

  1. \(x,y\) 都是 \(?\)。先设 \(x,y\) 不同,不难发现交换后只剩 \(x=0,y=1\) 的情况,由于答案对 \(2\) 取余,故这部分贡献一定是 \(0\)。再设 \(x,y\) 相同,此时递归到 \(x=1,y=1\)\(x=0,y=0\) 分别解决。
  2. \(x,y\) 有一个是 \(?\)。经过如上类似的分类讨论后可以发现其后继状态也可以唯一地用 \(0,1,?\) 来表示,递归到对应状态解决即可。
  3. \(x,y\) 都不是 \(?\)。此时可以直接判断是否交换,后继状态也是唯一的。

由于只有第一种情况会递归到两个不同的状态,且每次这样的递归必定会去掉序列中的两个 \(?\),问号总数一共是 $\Theta \left (n \right ) $ 的,故总复杂度 $O \left ( 2^{\frac{n}{2} }\operatorname{poly}\left ( n,m \right ) \right ) $,可以通过。

AC record

posted @ 2025-11-13 20:21  Mi2uk1  阅读(0)  评论(0)    收藏  举报