[CF1527B1] Palindrome Game (hard version)
题意略。
手玩一下,发现 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}
\]
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】