ali
ce
alice
alic
e 和 bob
bobbo
b 從小就一起玩石子。
有一天,他們又想愉快的玩乙個石子遊戲。
一共有 n
nn 堆石子,第 i
ii 堆石子有 aiai
ai個,兩人輪流操作。
a li
ce
alice
alic
e 走先手,每個人每個回合只能對一堆石子進行操作,ali
ce
alice
alic
e 每次操作只能拿偶數個石子,bob
bobbo
b 每次操作只能拿奇數個石子, 每次操作至少拿走乙個石子,直到一方無法進行任何操作,無法操作的人失敗。
假設a li
ce
alice
alice與bob
bobbo
b都是絕頂聰明的,如果 ali
ce
alice
alic
e 可以獲勝,那麼輸出 yes
yesye
s,否則輸出 nono
no。多組資料。對於每組資料,第一行輸入乙個正整數 n
nn,第二行輸入 n
nn 個正整數,第 i
ii 個數表示 aiai
ai。對於每組資料,每行輸出乙個字串yes
yesye
s或no
nono
。input 1
22 1
output 1
noinput 216
output 2
yes對於20%的資料,資料組數為1且n
nn=1
對於另外20%的資料,n
nn=1;
對於另外20%的資料,石子數都為1;
對於100%的資料n
nn的和小於1000000,石子數小於1000000000
乍一看,天那!模擬會炸哎
實則是到淼題
只有當n=1,且那一堆是偶數堆時
才輸出yes
yesye
s證明:
b ob
bobbo
b的最優策略:1.拿偶數堆 2.拿完一堆奇數堆
a li
ce
alice
alic
e的最優策略:拿完一堆偶數堆
偶數堆不斷在減少
所以a li
sa
alisa
alis
a會沒得拿
除非有且僅有一堆偶數堆
#include
#include
using namespace std;
int n,x;
int main()if
(sum==1&&n==1)
printf(
"yes\n");
else printf(
"no\n");
}return 0;
}
SDOI2008 石子合併 題解
題面 garsiawachs演算法專門解決石子合併問題 設乙個序列是a 0.n 1 每次尋找最小的乙個滿足a k 1 a k 1 的k,那麼我們就把a k 與a k 1 合併,並向前尋找乙個第乙個超過他們的和的數,把這個數插入到他後面 include define inc i,a,b for reg...
Luogu P1880 石子合併 題解報告
題目傳送門 題目大意 在乙個圓形操場的四周擺放n堆石子,現要將石子有次序地合併成一堆.規定每次只能選相鄰的2堆合併成新的一堆,並將新的一堆的石子數,記為該次合併的得分。試設計出1個演算法,計算出將n堆石子合併成1堆的最小得分和最大得分。思路解析 首先是斷環為鏈,這題資料不大,沒什麼問題。說一下轉移方...
牛客IOI周賽20 普及組(題解)
b 移動撤銷 c 石頭剪刀布 d 夾縫中求和 題目分析 首先,完全數是可以打表的,完全數就是那麼幾個直接打表判斷,剩下的就是過剩數和不足數,那麼有乙個定理那就是奇數是不足數,偶數是過剩數,但是有乙個特例,那就是2835,他雖然是乙個奇數但是卻是過剩數,特殊判斷一下就行 include include...