你的對手太壞了!在每年的年度三色抽卡遊戲錦標賽上,你的對手總是能打敗你,他的秘訣是什麼?
在每局三色抽卡遊戲中,有n
個卡組,每個卡組裡所有卡片的顏色都相同,且顏色只會是紅(r)、綠(g)、藍(b)中的一種。第i
個卡組有vi
張卡片。
對決雙方每次只能選擇乙個還未抽完卡的卡組,從中拿走若干張卡片,可以全拿走,但不能一張都不拿。你只能選擇顏色為紅或者綠的卡組,而對手只能選擇顏色為藍或者綠的卡組。
你是先手,你和對手輪流行動,誰不能操作了就輸了。
因為你的對手每次總是能打敗你,你決定寫乙個程式來幫助你做出決策。
給定遊戲剛開始時的卡組情況,你的程式需要判斷假設雙方都按照最優策略操作,那麼你是否會贏?
第一行包含乙個正整數t(1≤t≤100)
,表示測試資料的組數。
每組資料第一行包含乙個正整數n(1≤n≤1000)
,表示卡組的數量。
接下來n
行,每行乙個字元ci(ci∈)
和乙個正整數vi(1≤vi≤1000)
,分別表示第i
個卡組的顏色以及卡片數量。
對於每組資料輸出一行,若你能贏,輸出yes,否則輸出no。
32r 2
b 32
b 2r 3
3r 5
b 6g 1
noyesno
主要是看綠色的牌 看誰能多抽一張 或者平局 就是nim遊戲 比賽的時候沒有反應過來 一直在找規律 不過反應過來也不會寫
nim遊戲只要進行位運算即可
#includeusingview codenamespace
std;
//input
#define rep(i,a,b) for(int i=(a);i<=(b);i++)
#define repp(i,a,b) for(int i=(a);i>=(b);i--)
#define ri(n) scanf("%d",&(n))
#define rii(n,m) scanf("%d%d",&n,&m);
#define riii(n,m,k) scanf("%d%d%d",&n,&m,&k)
#define rs(s) scanf("%s",s);
#define ll long long
#define inf 0x3f3f3f3f
#define rep(i,n) for(int i=0;i
#define clr(a,v) memset(a,v,sizeof a)
/////////////////////////////////
/#define n 500+5
intmain()
if(flag)hong++;
if(hong>lan)
printf(
"yes\n");
else printf("
no\n");
}return0;
}
博弈論 Nim遊戲
這種遊戲稱為nim博弈,遊戲過程中面臨的狀態成為局面。n im nimni m博弈不存在平局,只有先手必勝和先手必敗兩種情況。定理nim 博弈先手 必勝,當 且僅當a 1xora2 xor xoran 0nim博弈先手必勝,當且僅當 a 1 texta 2 text cdots text a n n...
博弈論(一) Nim遊戲
重點結論 對於乙個nim遊戲的局面 a1,a2,an 它是p position當且僅當a1 a2 an 0,其中 表示位異或 xor 運算。nim遊戲是博弈論中最經典的模型 之一?它又有著十分簡單的規則和無比優美的結論,由這個遊戲開始了解博弈論恐怕是最合適不過了。nim遊戲是組合遊戲 combina...
博弈論之Nim遊戲
二 nim遊戲的定義 三 過程例項 四 分析 3.bouton s theorem 五 例題 nim遊戲是博弈論中最經典的模型 之一 它又有著十分簡單的規則和無比優美的結論 nim遊戲是組合遊戲 combinatorial games 的一種,準確來說,屬於 impartial combinator...