b 自殺遊戲
時間限制:c/c++ 1秒,其他語言2秒
空間限制:c/c++ 32768k,其他語言65536k
64bit io format: %lld
題目描述
alice和bob產生了不可調節的矛盾,於是他們相約一起玩乙個自殺遊戲,輸的人就會從這個世界上消失。 遊戲開始時,alice手上拿著乙個定時炸彈,炸彈有個倒計時t。炸彈在t=0時刻會**,此時手上拿著炸彈的人會從這個世界上消失。為了增加遊戲樂趣,他們約定每個人拿到炸彈後可以選擇將炸彈的時間調快d秒(d ∈ [a,b]),或者不調。每次交換炸彈會消耗1秒(假設調節炸彈時間不需要消耗時間)。 問題來了,如果雙方都足夠聰明,誰會活下去呢?
輸入描述:
第一行有三個整數t,a,b,分別表示炸彈初始時刻的倒計時,可調節時間的範圍。(0 ≤ t ≤ 105,1 ≤ a ≤ b ≤ 10)
輸出描述:
若alice存活則輸出"alice",若bob存活則輸出"bob"。
示例1輸入
6 3 4
輸出alice
說明alice只需要將炸彈調快3秒後再給bob,bob就會拿到乙個2秒後**的炸彈。
f[0]為必敗狀態 f[i-1]==0 必然 f[i]是必勝狀態
當f[i-1]==1 時 看f[i-1-b]到f[i-1-b] 狀態有沒有必敗狀態 就可以認定f[i]是必勝狀態
// 博弈真的很神奇 orz
官方題解:
將必勝態和必敗態的轉移用 dp 遞推或者記憶化搜尋出來即可。 乙個必敗態的後繼狀態全部是必勝態,乙個必勝態的後繼存在比敗態
#include #include #include #include #include #include using namespace std;
typedef long long ll;
const int maxn = 1e5+5;
int n,m,t,k,a,b;
int f[maxn];
int main()}}
} if(f[t]) cout<<"alice\n";
else cout<<"bob\n";
} return 0;
}
牛客小白月賽3 C 博弈
傳送門 題目描述 xhrlyb在和cwbc玩遊戲。在乙個多重集合中有在 l,r 中的全部整數各乙個,即l,l 1,l 2,r。每次xhrlyb和cwbc可以選擇乙個大於0的數字p,把p從多重集合中刪去,然後向集合中加入k個 輸入描述 輸入資料有多行,每行有三個正整數,l,r,k。輸出描述 輸出資料應...
牛客小白月賽 黑黑白白(博弈)
只要子兒子存在乙個p,那麼當前這個節點就為n,反之如果兒子全部都是n,那麼當前節點就為p,dfs就可以解決,我在初始化vector的時候少打了乙個 wa兩次,還是太粗心 include include include include include include define ll long lo...
數字方陣 2018牛客網小白月賽2 題A
數字方陣 時間限制 c c 1秒,其他語言2秒 空間限制 c c 262144k,其他語言524288k special judge,64bit io format lld 不一樣。他想要更多的方陣,但他再寫不出來了。於是他 跑來找你,請你給他乙個邊長為 輸入共一行,乙個整數 意義同題面描述。輸出共...