問題形式
有\(n\)個位置\(1...n\),每個位置上有\(a_i\)個石子。有兩個人輪流操作。操作步驟是:挑選\(1...n\)中任一一個存在石子的位置\(i\),將至少1個石子移動至\(i-1\)位置(也就是最后所有石子都堆在在0這個位置)。誰不能操作誰輸。求先手必勝還是必敗。
結論
問題等價於,求位置為奇數的\(a_i\)的異或和,若異或和等於0,則先手必敗,否則先手必勝。你可能已經注意到這非常像Nim游戲。其實這個游戲恰好等價於:將每個奇數位置的數\(x\)看成一堆有\(x\)個石子的石子堆,然后玩Nim游戲。
證明
拿走某一堆石子的一部分,相當於將某個奇位置的石子移動到它左邊的偶位置上。
如果大家都只動奇位置的石子,那么這等價於兩人在玩Nim游戲。
但如果有人想打破規則呢?
假設Nim游戲先手必勝,那么先手肯定優先玩Nim游戲;如果后手試圖破壞局面,將某個偶位置上的若干石子移動到了左邊的奇位置i上,那么先手可以將這若干個剛移到i的石子繼續移動到i左邊的偶位置上,對Nim局面依然沒有任何影響,除非后手回頭來繼續動奇位置的石子,那也只能是輸。
那么如果Nim游戲先手必敗,也是同理,后手可以用相同的方式迫使先手玩Nim游戲,直到輸為止。
因此,奇數位置的石子的相關信息,就直接決定了階梯\(Nim\)問題的結果。
