題目描述
虛擬世界要舉行乙個劍術大會,小y和小x進入了決賽,決賽進行k個回合。
決賽賽制為地上有n個木樁子,每次小y或者小x能砍其中乙個柱子,他們可以選擇砍掉柱子的一截(整數高度)或者是直接砍掉柱子。
每回合中,誰砍掉了最後乙個柱子,誰將贏下這個回合。
機制的小y鈔能力買通了裁判,每局都讓小y先出手
輸入第一行乙個數k組,
接下來每組第一行為乙個整數n,第二行為n個整數,分別為每個柱子的高度h
輸出對於每個回合,如果小y一定能贏,輸出「gg」,若小y不一定能贏,輸出"gl hf"。
樣例輸入 copy32
1 32
3 35
1 2 3 4 5
樣例輸出 copy
gggl hf
gg提示
對於100%的資料:1<=k<=10,1<=n<=1001<=n<=1001<=n<=100,1<=h<=10001<=h<=10001<=h<=1000
思路尼姆博奕
n 堆物品,兩個人輪流取,每次取某堆中的不少於1個,最後取完者勝。
結論:將 n 堆物品數量全部異或後結果為 0 則先手必敗,否則先手必勝。
**:
#include
#include
#include
//#include
#include
#include
#include
#include
#include
#include
#include
#include
#define x first
#define y second
#define inf 0x3f3f3f3f
#define p pair
using
namespace std;
typedef
long
long ll;
const
double eps=
0.01
;const
int n=
1e5+10;
const
int maxn=
5e4+10;
const
int mod=
1000000007
;int k,n,m;
intmain()
return0;
}
尼姆博奕(Nimm Game)
尼姆博奕 有n堆石子。a b兩個人輪流拿,a先拿。每次只能從一堆中取若干個,可將一堆全取走,但不可不取,拿到最後1顆石子的人獲勝。假設a b都非常聰明,拿石子的過程中不會出現失誤。給出n及每堆石子的數量,問最後誰能贏得比賽。假設三堆石子,奇異局勢有 0,0,0 0,n,n 1,2,3 等等,每一組的...
尼姆博弈(巴什博奕)
尼姆博弈 有三堆各若干個物品,兩個人輪流從某一堆取任意多的物品,規定每次至少取乙個,多者不限,最後取光者得勝。這種情況最有意思,它與二進位制有密切關係,我們用 a,b,c 表示某種局勢,首先 0,0,0 顯然是奇異局勢,無論誰面對奇異局勢,都必然失敗。第二種奇異局勢是 0,n,n 只要與對手拿走一樣...
巴什博奕 尼姆博弈
只有一堆n個物品,每次至少取a個,最多取b個 問題可分為 1.最後取完者勝 面臨 a b k個物品的人必敗 2.最後取完者敗 面臨 a b k a個物品的人必敗 因此當兩個都極其聰明的人博弈時,就看有多少個物品,自己先手取了之後能否讓對手面臨必敗點 對於最後取完者勝的情況 對取物品方面又可分為 最後...