若a1x
ora2
xora
3...
xora
n≠
0a_1 \ xor \ a_2 \ xor \ a_3 \ ... \ xor \ a_n \neq 0
a1xor
a2x
ora3
...
xora
n
=0則先手(r
rr)贏
否則 先手(r
rr)輸
(1): 定義令tem
=a1x
ora2
xora
3...
xora
ntem = a_1 \ xor \ a_2 \ xor \ a_3 \ ... \ xor \ a_n
tem=a1
xor
a2x
ora3
...
xora
n(2):具體過程
①證明:若a1x
ora2
xora
3...
xora
n≠
0a_1 \ xor \ a_2 \ xor \ a_3 ... \ xor \ a_n \neq 0
a1xor
a2x
ora3
...
xora
n
=0則當前先手(r
rr)贏
首先,tem
temte
m 的二進位制最高位必定在 ai(
i∈[1
,n])
a_i (i \in [1, n])
ai(i∈
[1,n
])的同一位上出現
滿足條件的乙個 a[i
](i∈
[1,n
])
a[i] (i \in [1, n])
a[i](i
∈[1,
n]) 記作x,將 tem
temte
m 減去 tem
temte
m 二進位制最高位轉換成十進位制的值記作 tem
ptemp
temp
易知:tem
p<=x
temp <= x
temp
<=x
當 rr
r 選擇改變 x
xx 時,我們將 x
xx 減去 tem
ptemp
temp
,這時 a1x
ora2
xora
3...
xora
n=
0a_1 \ xor \ a_2 \ xor \ a_3 \ ... \ xor \ a_n = 0
a1xor
a2x
ora3
...
xora
n=0
即證: 若a1x
ora2
xora
3...
xora
n=
0a_1 \ xor \ a_2 \ xor \ a_3 \ ... \ xor \ a_n = 0
a1xor
a2x
ora3
...
xora
n=0
,則當前先手 (j
jj) 輸。
轉換成②
②證明: 若a1x
ora2
xora
3...
xora
n=
0a_1 \ xor \ a_2 \ xor \ a_3 \ ... \ xor \ a_n = 0
a1xor
a2x
ora3
...
xora
n=0
,則當前先手 (j
jj) 輸。
j
jj任意選擇一堆拿走一堆牌
則 a 1x
ora2
xora
3...
xora
n≠
0a_1 \ xor \ a_2 \ xor \ a_3 ... \ xor \ a_n \neq 0
a1xor
a2x
ora3
...
xora
n
=0即證:若a1x
ora2
xora
3...
xora
n≠
0a_1 \ xor \ a_2 \ xor \ a_3 ... \ xor \ a_n \neq 0
a1xor
a2x
ora3
...
xora
n
=0則當前先手(r
rr)贏
結論:當最後都拿完時:a1x
ora2
xora
3...
xora
n=
0a_1 \ xor \ a_2 \ xor \ a_3 \ ... \ xor \ a_n = 0
a1xor
a2x
ora3
...
xora
n=0
,則上一次拿牌的人是先手 (r
rr),所以 r
rr 贏
反之亦然,即證
NIM博弈證明
古代的nim operatorname nim取石子遊戲是由兩個人面對若干堆石子進行的遊戲。設有n 2 n ge 2 n 2堆石子,各堆分別含有a1 a2 a na 1 a 2 cdots a n a1 a2 an 個石子。遊戲的目的就是選取最後剩下的石子。遊戲規則如下 遊戲人交替進行遊戲 當輪到每...
關於nim博弈的證明。
nim博弈我們大家都很熟悉,那麼為什麼nim博弈中石子數異或起來和為0就是先手必敗,非0就是先手必勝呢,想必大家都有過這個疑問。很多人都知道這個結論,但是卻很少人知道證明過程。其實nim博弈的證明過程是一種對稱博弈。我們知道如果異或和是0,先手必敗。考慮異或和是0的意義,異或和是0代表著對於所有石頭...
博弈論 Nim博弈 反Nim博弈 SG函式
nim遊戲 hdu1846 若各堆石子異或和為不為零,則先手勝 後手當且僅當異或和為零時取勝 此題問要想先手取勝第一步的取法,考慮到上述引理,只需遍歷一遍石子找到異或和的最高位匹配的個數。int a 105 int main return0 view code hdu 1848 在上題的基礎上取法只...