详细的证明:
查看原帖
详细的证明:
1101254
Louisdlee楼主2024/5/2 18:08

问题:

一个异或游戏:

有NN个不同的数aia_i,两名玩家轮流操作,每次操作中玩家需要选择一个数进行删除。

如果删除之后,剩下的数的异或是00,则该名玩家获胜。

你需要回答这场游戏最终谁会获胜。

证明:

设s=a[1]⨁a[2]⨁a[3]⨁...⨁a[n]s=a[1]\bigoplus a[2]\bigoplus a[3]\bigoplus...\bigoplus a[n]

1、一步必胜的情况:∃i∈[1,N] s=a[i]\exist i\in [1,N] \:\quad s=a[i]​

2、两步必胜的情况:∀(i,j)∈[1,N]s=a[i]⨁a[j]\forall (i,j)\in [1,N]\quad s=a[i]\bigoplus a[j]

res=a[k1]⨁...⨁a[k2]=0 (k≠(i,j))res=a[k_1]\bigoplus...\bigoplus a[k_2]=0\:(k\neq(i,j))

由于玩家双方会采取最优策略,如果只存在一对(i,j)(i,j)满足:取走a[i]a[i]后再取走a[j]a[j]会导致剩下的数的异或为0.

先手可以选择不取走a[i]a[i],而是取别的数a[k]a[k],这样不会破坏(i,j)(i,j),也就无法在两步内获胜。

但是,我们是要求在两步内必胜,那么是否存在这样的必胜情况?

当∀i∈[1,N]\forall i\in[1,N] 都有一个数jj和它配对, 也就意味着我们能找出N2\frac{N}{2}对这样的(i,j)(i,j)时,是存在两步必胜的情况的。

但是,如果NN是奇数,那么就不可能找出N2\frac{N}{2}​对这样的数,因为一定会有多余的数,所以如果按最优策略走的话,那么也就不能在两步内必胜。

那么该怎么赢???

当NN是奇数,不管有多少对,设为kk对,一定会剩下奇数个不满足配对的数,优先删掉这些数,因为它们有奇数个,当它们删完了之后,一定是轮到对面的回合,这样他只能开始删这 kk组配对的数,也就意味着对面输了。

所以,NN为奇数的时候,先手必胜。

3、三步必胜的情况:

假设存在tt组(i,j,k)(i,j,k)这样的三步必胜的数:

先手先删除a[i]a[i],则这一组数就变成了(j,k)(j,k)这样的两步必胜的数。

后手不可能选择删(j,k)(j,k)中的任意一个,只能删掉其他的非两步必胜的数。

最终一定是剩下tt组(j,k)(j,k)这样的两步必胜的数,因为剩下数的个数是偶数,代表着当前已经删除了N−2tN-2t个数。

如果N−2tN-2t是奇数,即NN是奇数,说明下一步是后手开始下,后手只能删(j,k)(j,k)这样的数,后手必输。

如果N−2tN-2t是偶数,即NN是偶数,说明下一步是你下,你只能删除(j,k)(j,k),你必输。

所以三步必胜的最终状态是等价于两步必胜。

结论也仍然是NN为奇数的时候,先手必胜,NN为偶数的时候,先手必败。

同理,k≥2k\geq2的所有kk步必胜的情况,都能归结于22步必胜,它们的结论是相同的:NN为奇数,先手必胜,NN为偶数,先手必败。

k=1k=1,即11步必胜的情况,需要我们特判。

2024/5/2 18:08
加载中...