題目描述
有一種有趣的遊戲,玩法如下:
玩家:2 人;
道具:n 堆石子,每堆石子的數量分別為 x1,x2,...,xn;
規則:遊戲雙方輪流取石子;
每人每次選一堆石子,並從中取走若干顆石子(至少取 1 顆);
所有石子被取完,則遊戲結束;
如果輪到某人取時已沒有石子可取,那此人算負。
假如兩個遊戲玩家都非常聰明,問誰勝誰負?
輸入格式
第一行,乙個整數 n;
第二行,n個空格間隔的整數 xi,表示每一堆石子的顆數。
輸出格式
輸出僅一行,乙個整數,若先手獲勝輸出win
,後手獲勝輸出lose
。
樣例樣例輸入
4
7 12 9 15
樣例輸出
win
資料範圍與提示
對於全部資料,n≤5×104
,1≤xi≤105。
sol:板子,當任意取時sg[x]=x,所以全部異或起來就好了
#include usingview codenamespace
std;
typedef
intll;
inline ll read()
while
(isdigit(ch))
return (f)?(-s):(s);
}#define r(x) x=read()inline
void
write(ll x)
if(x<10
)
write(x/10
); putchar((x%10)+'0'
);
return;}
#define w(x) write(x),putchar(' ')
#define wl(x) write(x),putchar('\n')
intn;
intmain()
一本通1668取石子
時間限制 1000 ms 記憶體限制 524288 kb alice 和 bob 兩個好朋友又開始玩取石子了。遊戲開始時,有 n n n 堆石子排成一排,然後他們輪流操作 alice 先手 每次操作時從下面的規則中任選乙個 1 從某堆石子中取走乙個 2 合併任意兩堆石子。不能操作的人輸。alice ...
資訊學奧賽一本通 1218 取石子遊戲
時間限制 1000 ms 記憶體限制 65536 kb 提交數 2463 通過數 1138 有兩堆石子,兩個人輪流去取。每次取的時候,只能從較多的那堆石子裡取,並且取的數目必須是較少的那堆石子數目的整數倍,最後誰能夠把一堆石子取空誰就算贏。比如初始的時候兩堆石子的數目是25和7。25 7 11 7 ...
一本通 1 1 例 2 種樹
題目傳送門 這題的題目問的是要滿足所有居民的建議,至少要種多少棵樹。對於這種題目,我們首先想到的應該是貪心策略。貪心策略 首先按右端點從小到大排序,因為要求樹最少,所以要盡量放在右端點。然後定義乙個bool陣列判斷該點是否種過樹即可。從右端點開始種,可以讓更多的樹照顧到更右側的端點,這樣就能使種的數...