有兩堆小石子,第一堆有a顆,第二堆有b顆
有兩個人在博弈,每次操作可以從一堆石子中取走任意數量個,或者從兩堆石子中取走相同數量個,不能操作者輸
問先手是否有必勝策略
a,b<=1e9
其實這個模型叫做威佐夫博弈
為了方便我們規定a<=b
我們先觀(da)察(biao)幾個必敗態
(0,0),(1,2),(3,5),(4,7),(6,10),(8,13)…
通過人類智慧型我們可以發現,第i個必敗態(ai,bi)滿足,ai是之前沒有出現過的最小整數,bi=ai+i
這個東西有什麼性質呢?
首先設b-a=k,那麼每個k唯一對應乙個必敗態
然後每個正整數都唯一出現在某乙個必敗態中
那麼為什麼這個是必敗態呢?
證明1.必敗態的後繼為必勝態
如果選擇操作某一堆,那麼另一堆的個數不變,由之前的分析知每個自然數只會出現在乙個必敗態中,所以轉移到的為必勝態
2.必勝態可以轉移到必敗態
分類討論
1:a=a[k],b>b[k],那麼我們可以操作b把b=b[k]
2:a=a[k],ba[k],b=a[k]+k,那麼我們可以操作a把a=a[k]
4:a但是我們要怎麼快速判斷某乙個狀態為必勝態呢
也就是說找出(a[n],b[n])的通項公式
設a,b是正無理數且1a+證明1b=1
+=1a1
+b1
=1記p=,q=,則p∩q
=∅
p\cap q=\varnothing
p∩q=∅且p∪q
=n
+p\cup q=n^+
p∪q=n+
1:p ∩q
=∅
p\cap q=\varnothing
p∩q=
∅設存在k∈p
且k∈q
k\in p且k\in q
k∈p且k∈
q,即存在正整數n,m滿足k
,b
m
1k
k,bm1改寫一下就是n
k>1a
>nk
+1,m
k>1b
>mk
+1
>>,>>
kn>a1
>k+
1n,
km>b1
>k+
1m相加n+m
k>
1>n+
mk+1
>1>
kn+m
>
1>k+
1n+m
即k
m
1k
km1,與n,m,k為正整數衝突
2:p ∪q
=n
+p\cup q=n^+
p∪q=n+
設存在k∉p
且k∉q
k\notin p且k\notin q
k∈/p且
k∈/
q,即存在正整數n,m滿足a
n<
n+1)
−1,b
m<
k
m+1)
−1
anan
<
kn+1)
−1,b
m<
km+1)
−1改寫一下就是n
k<1a
1k+1
,m
k<1b
1k+1
<<,<<
kn1n+1
,km
1m+1
相加n+m
k<
1
m+2k
+1
<1<
kn+m
<
11n+m
+2即n+m
<
k
m+
1n+mn+
m<
km+1,與n,m,k為正整數矛盾
我們發現必敗態很像beatty序列,因為a[n],b[n]取遍所有自然數
那麼我們不妨構造a,b
a,ba,
b使得⌊an
⌋+n=
⌊bn⌋
,1a+
1b=1
\lfloor an\rfloor+n=\lfloor bn\rfloor,+=1
⌊an⌋+n
=⌊bn
⌋,a1
+b1
=1⌊an
⌋+n=
⌊an+
n⌋=⌊
(a+1
)n⌋=
⌊bn⌋
\lfloor an\rfloor+n=\lfloor an+n\rfloor=\lfloor (a+1)n\rfloor=\lfloor bn\rfloor
⌊an⌋+n
=⌊an
+n⌋=
⌊(a+
1)n⌋
=⌊bn⌋1a
+1a+
1=
1+=1
a1+a+
11=
1解得a=1
+52a=
a=21+5
我們驚訝地發現這裡出現了**分割比5−1
2\sqrt 5-1\over 2
25−1
只能說是巧合…嗎?
#include
#include
#include
#include
#define fo(i,a,b) for(int i=a;i<=b;i++)
#define fd(i,a,b) for(int i=a;i>=b;i--)
using
namespace std;
int n,m;
intmain()
return0;
}
博弈 威佐夫博弈
有兩堆各若干個物品,兩個人輪流從某一堆或同時從兩堆中取同樣多的物品,規定每次至少取乙個,多者不限,最後取光著得勝。奇異局勢的性質 1.任何自然數都包含在乙個且僅有乙個奇異局勢中 2.任何操作都可以將奇異局勢變為非奇異局勢 3.採用適當的方法,可以將非奇異局勢變為奇異局勢。所以面對非奇異局勢,先手必勝...
威佐夫博弈
威佐夫博奕 wythoff game 有兩堆各若干個物品,兩個人輪流從某一堆或同 時從兩堆中取同樣多的物品,規定每次至少取乙個,多者不限,最後取光者得勝。這種情況下是頗為複雜的。我們用 ak,bk ak bk k 0,1,2,n 表示 兩堆物品的數量並稱其為局勢,如果甲面對 0,0 那麼甲已經輸了,...
威佐夫博弈
description 有兩堆石子,數量任意,可以不同。遊戲開始由兩個人輪流取石子。遊戲規定,每次有兩種不同的取法,一是可以在任意的一堆中取走任意多的石子 二是可以在兩堆中同時取走相同數量的石子。最後把石子全部取完者為勝者。現在給出初始的兩堆石子的數目,如果輪到你先取,假設雙方都採取最好的策略,問最...