一本通1664 例 2 取石子遊戲 2

2022-05-08 01:51:13 字數 1063 閱讀 8034

題目描述

有一種有趣的遊戲,玩法如下:

玩家: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 using

namespace

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()

view code

一本通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陣列判斷該點是否種過樹即可。從右端點開始種,可以讓更多的樹照顧到更右側的端點,這樣就能使種的數...