博弈(2019 3 9訓練) 更新完成

2021-09-12 07:17:34 字數 1547 閱讀 2310

基礎博弈論其他練習題:

巴什博弈,模板題。

#include

using namespace std;

intmain()

return0;

}

這題找規律,先打表前14個很容易就能找出規律。

前14個打表依次為:(p表示先手必敗,即cici贏;n表示先手必勝,即kiki贏)12

3456

78910

1112

1314nn

pnnp

nnpn

npnn

ac**:

#include

using namespace std;

intmain()

}return0;

}

尼姆博弈,模板題。

#include

using namespace std;

intmain()

if(ans==0)

printf

("lose\n");

//所有石子異或為0,先手必輸

else

printf

("win\n");

}return0;

}

威佐夫博弈,模板題。

#include

using namespace std;

intmain()

return0;

}

尼姆博弈,先處理一下資料,把二維陣列a的每行分成兩個火柴堆,依次異或每個火柴堆,最後判斷是否為0即可。

#include

using namespace std;

intmain()

ans=ans^tmp1^tmp2;}if

(ans==0)

printf

("bob\n");

else

printf

("alice\n");

}return0;

}

反尼姆博弈,模板題。

尼姆博弈是最先取光石子的人贏,而反尼姆博弈是最先取光石子的人輸。

先把所有石子異或,設為ans,反尼姆博弈中先手必勝有兩種可能:

①ans!=0且存在a[i]>1 ②ans=0且任意a[i]=1(因為每個石子堆只有乙個石子且可以證明石子堆個數必為偶數,所以顯然總是後手最先取光石子,也就是後手必敗,先手必勝)

#include

using namespace std;

intmain()

if(ans==

0&&flag==

0||ans!=

0&&flag==1)

printf

("yes\n");

else

printf

("no\n");

}return0;

}

大一寒假訓練十(string) 更新完成

kmp演算法。先預處理得到next陣列,若存在迴圈節,即n n ne n 0,則最小迴圈節長度為n ne n 答案為n n ne n 若不存在則輸出1。include include include using namespace std const int n 1e6 10 char s n in...

大一寒假訓練六(二分查詢) 更新完成

二分查詢最大值的最小值為ans,judge函式中return的時候大於和等於是同一種情況,等於號在judge m 中,則滿足if judge m 時記下ans m。include using namespace std int l,r,n,m,k,ans,a 10010 bool judge int...

博弈訓練 nim與bash

本文主要記錄和nim博弈,bash game的相關問題。題目 hdu 2188 悼念512汶川大 遇難同胞 選拔志願者 hdu 2149 public sale lightoj 1253 misere nim lightoj 1247 matrix game hdu 1517 a multiplic...