[CF1527B1] Palindrome Game (hard version)

发布时间 2024-01-03 12:22:47作者: CQWDX

题意略。

手玩一下,发现 polybeta Bob 赢面不大。

本来想模拟的。考虑结论题。

由于计入代价的操作只有 \(s_i=0\to1\) 一个,可以统计 \(0\) 的个数为 \(cnt\)

由于这题和 Ezy Version 的唯一区别就是初始字符串是否为回文,很自然地想到对于初始串是否回文分类讨论。

若初始字符串为回文:

显然地,若 \(cnt=1\),Bob 必胜。

再手玩几组,发现若 \(2|cnt\),双方策略如下:

  • Alice 填入 1;
  • Bob 填入 1;
  • Alice 填入 1;
  • ...
  • 当还有 2 个空可填时,Alice 填入 1;
  • Bob 翻转;
  • Alice 填入 1.

显然 Alice 的代价会始终比 Bob 多 \(2\)

而当 \(2\nmid cnt\) 的时候,相当于 \(2|cnt\) 时 Bob 先手。Alice 必胜。

若初始字符串不为回文:

我们可以发现当 \(2\nmid n\) 时 Alice 必胜。

Alice 第一步就可以将其翻转。Bob 的目标是尽可能早地将其转为回文串。

但 Bob 始终会比 Alice 在开头多出一部分的代价。且回文后一定有 \(cnt\geq 2\),代价挣不回来。

但如果回文后 \(cnt=1\) 呢?此时轮到 Alice,可以挣回来 1 的代价。此时最好的结果是平局。即使其回文所花费的代价为 \(1\)

只有一种字符串满足以上条件:\(2\nmid n \wedge s_{\frac{n}{2}+1}=0\wedge cnt=2\)

故结论为:

\[\begin{cases}\tt Bob&cnt=1\ or\ 2\mid cnt\\\tt Draw&2\nmid n\ and\ s_{\frac{s}{2}+1}=0\ and\ cnt=2\\\tt Alice&\tt otherwise\end{cases} \]