有兩堆小石子,第一堆有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< k
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 #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 有兩堆石子,數量任意,可以不同。遊戲開始由兩個人輪流取石子。遊戲規定,每次有兩種不同的取法,一是可以在任意的一堆中取走任意多的石子 二是可以在兩堆中同時取走相同數量的石子。最後把石子全部取完者為勝者。現在給出初始的兩堆石子的數目,如果輪到你先取,假設雙方都採取最好的策略,問最...#include
博弈 威佐夫博弈
威佐夫博弈
威佐夫博弈