博弈论

博弈论好神奇!!!(虽然不会)

 

[ARC131C] Zero XOR

题目链接

博弈论真是太好了!!!

先观察题目,看完之后思考,思考完之后直接猜一个结论,反正是跟先后手有关,那就根据规则,猜出来一个神奇的结论:

当n为奇数时,先手必胜

手模几组样例之后,发现很对,那为什么这么对呢?接下来是重头戏。

我们考虑当前状态, 当堆数为奇数时,我们尝试证明:先手总有一种拿走一堆石子的方式,使后手无论怎么拿,都无法使异或和为0。

如果能够证出这个结论,那最后一堆石子一定是一开始那个先手拿走的,那他就赢了,也就是先手必胜。

下面开始证明:

  反证法:也就是不存在这么一种方式,即先手无论拿走哪堆,后手都有一种方式,再拿一堆,使异或和为零,我们去尝试推翻他。

设当前所有数的异或和为 K ,设先手拿走的石子为 a ,后手拿走的为 b,剩下的异或和为 c, 其中 c = 0;

那么:

\[ \begin{cases} a \oplus b \oplus c =K\\ c=0 \\ \end{cases} \]

\[\Downarrow \]

\[a \oplus b = K \]

根据题意,每一堆石子的数量不同,也就是说每一个 a 唯一对应一个 b,两两相匹配 。

此时你会发现现在的堆数为奇数,总会剩那么一堆,没有其他一堆和他相匹配。

也就是先手可以拿走那个单独的一堆,使后手无论拿走那一堆,都无法使剩下的异或和为零。

然后循环这个操作,最后得出结论:n为奇数时,先手必胜。

那反过来,n为偶数时,一定先手必败吗,答案显然不是,因为可能先手一下就成了,不给后手机会。

如果不是先手一击制胜,那就是先手必败。

posted @ 2023-08-15 14:55  Trmp  阅读(42)  评论(2编辑  收藏  举报
-->