hdu2177威佐夫博弈

2022-09-03 16:15:11 字數 510 閱讀 9749

這題由於資料水1a掉了,我的**只對大的一堆進行操作也能ac,事實上應該將對小的操作情況也考慮進去,但是題目沒有給出輸出順序。

思路:先用**分割乘以差值與小堆進行判段,若相等,為奇異局勢,直接輸出零。

否者用二分搜尋對某一堆的操作。

**:#include#includeusing namespace std;

const double grs = (sqrt(5.0)+1)/2;

const int n = 1000005;

int a;

int b;

int main()

if(a==(int)((grs)*(b-a)))

cout<<0<=k1+1)//先找相同

}while(s2>=s1+1) // 從b堆中取 且b取完後比a大

}s2=a;s1=0;

b=a;tmp=b/2;

while(s2>=s1) //從b中取 且取完後比a小

else if(b-tmp

hdu2177威佐夫博弈

其實就是分析一下威佐夫博弈的原理,先設小的數量的一堆是a,大的數量的一堆是b 如果 b a sqrt 5 1 2等於小的值,那麼就可以保證後手贏 那麼分析先手贏的原理便是先手拿了一次後使新的差值 sqrt 5 1 2等於小的值即可 第一次拿有兩種情況 1 如果第一次在兩堆中拿的數目相同,那麼差值是不...

hdu2177 威佐夫博弈變形

有兩堆石子,數量任意,可以不同。遊戲開始由兩個人輪流取石子。遊戲規定,每次有兩種不同的取法,一是可以在任意的一堆中取走任意多的石子 二是可以在兩堆中同時取走相同數量的石子。最後把石子全部取完者為勝者。現在給出初始的兩堆石子的數目,如果輪到你先取,假設雙方都採取最好的策略,問最後你是勝者還是敗者。如果...

取 2堆 石子遊戲(威佐夫博弈 hdu2177)

t 取 2堆 石子遊戲 time limit 1000msmemory limit 32768kb64bit io format i64d i64u submit status practice hdu 2177 description 有兩堆石子,數量任意,可以不同。遊戲開始由兩個人輪流取石子。遊...