upc 居合(尼姆博奕)

2022-06-18 14:18:12 字數 1225 閱讀 7504

題目描述

虛擬世界要舉行乙個劍術大會,小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個物品的人必敗 因此當兩個都極其聰明的人博弈時,就看有多少個物品,自己先手取了之後能否讓對手面臨必敗點 對於最後取完者勝的情況 對取物品方面又可分為 最後...