alice和bob在玩遊戲,他們面前有n堆石子,對於這些石子他們可以輪流進行一些操作,不能進行下去的人則輸掉這局遊戲。
可以進行兩種操作:
1. 把石子數為奇數的一堆石子分為兩堆正整數個石子
2. 把兩堆石子數為偶數的石子合併為一堆
兩人都足夠聰明,會按照最優策略操作。現在alice想知道自己先手,誰能最後贏得比賽。
第一行乙個正整數n。(1<=n<=104)接下來第二行n個正整數表示每堆石子的數量。每堆石子不超過105個。
alice或者bob,表示誰能最後贏得遊戲。
示例1複製
3複製3 2 2
alice
alice只要現將兩個石子數量為2的堆合併為一堆4個石子,bob就只能把3分為兩堆1和2,接下來alice只要將2和4合併,bob輸掉了這局遊戲。
#include #include int ans[100010];
int main()
if (a %2 ==1||a==0&&ans[1]==b)
puts("bob");
else puts("alice");
return 0;
}
Wannafly挑戰賽A 概率DP
給你乙個長 n 的序列,m 次查詢 每次查詢給乙個 x,然後 從序列的最左端 1 開始,每次隨機的選擇乙個右端點 r,如果兩個端點間的區間和不超過 x 就進行一次分割,然後把左端點變成 r 1,否則一直隨機下去。問這樣分割出來的期望段數 第一行兩個數 n,m 之後一行 n 個數表示這個序列 之後m行...
Wannafly挑戰賽5 補題
a 珂朵莉與宇宙 思路 科學暴力 列舉字首和,同時計算字首和裡面可能出現的完全平方數,匹配字首和 與完全平方數的差值是否在之前的字首和出現,出現了幾次就是存在多少個區間,利用的是連續的性質。include using namespace std typedef long long ll const ...
Wannafly挑戰賽6 鎖
106號房間共有n名居民,他們每人有乙個重要度。房間的門上可以裝若干把鎖。假設共有k把鎖,命名為1到k。每把鎖有一種對應的鑰匙,也用1到k表示。鑰匙可以複製並發給任意多個居民。每個106房間的居民持有若干鑰匙,也就是1到k的乙個子集。如果幾名居民的鑰匙的並集是1到k,即他們擁有全部鎖的對應鑰匙,他們...