恐怖的奴隸主 bob

2022-03-23 02:00:54 字數 2043 閱讀 3455

試題3:恐怖的奴隸主(bob) 

源**:bob.cpp 

輸入檔案:bob.in 

輸出檔案:bob.out 

時間限制:1s 

空間限制:512mb 

小l熱衷於undercards. 

在undercards中,有四個格仔。每個格仔要麼是空的,要麼住著乙隻bigbob。

每個bigbob有乙個不超過k的血量;血量減到0視為死亡。那個格仔隨即空

出。 當乙隻bigbob受到傷害後,假如它沒有死亡且剩餘血量為t,它會從左數第

乙個空格處召喚乙隻血量為a[t]的bigbob;若沒有空格,則不會召喚。 

法術r定義為:從左往右,對每個bigbob造成一點傷害;假如有bigbob死

亡,重複上述效果。 

聰明的小l發現,在某些情況下,當他發動法術r時,遊戲會陷入迴圈。 

他想求出這樣的初始情形有多少種。 

輸入乙個正整數k; 

隨後一行k-1個正整數,表示a[1]~a[k-1]; 

輸出乙個整數,表示答案。 

2 2 

31 bigbob最多有2血,滿血bigbob受傷會召出新的。 

迴圈的初始狀態有: 

(2,1,0,0),(1,2,0,0),(2,0,1,0),(2,1,1,0),(0,2,1,0),(1,2,1,0),(2,2,1,0) ,(1,0,2,0),(0,1,2,0),(1,1,2,0),(2,1,2,0),(2,1,0,1),(0,2,0,1),(1,2,0,1),(0,2,1,1),(1,2,1,1),(0,0,2,1),(1,0,2,1),(0,1,2,1),(1,1,2,1),(2,1,2,1),(0,2,2,1),(1,2,2,1),(2,1,0,2) ,(1,2,0,2),(2,0,1,2),(2,1,1,2),(0,2,1,2),(1,2,1,2),(2,2,1,2),(2,1,2,2) 

共31種。 

對於30%的資料,k≤5; 

對於70%的資料,k≤10, a[i]=k; 

對於100%的資料,k≤15, 1≤a[i]≤k。 

(這裡我不得不吐槽一下:這道題作者的語文老師應該是乙個教數學的體育老師吧)

這裡我解釋一下題目。(可能有很多人栽在了這裡,包括我……)

首先每次從左到右對每乙隻bigbob進行1血的攻擊。

攻擊過程中若乙隻bigbob沒死它會立即在從左到右的第乙個空地上「生」出乙個血量為a[t](t為bigbob的剩餘)的「新」bigbob。(若無空地,則不會有「新」bigbob)

攻擊過程中若乙隻bigbob死亡,則該bigbob的位置會變為空地。

若進行完一輪(一輪:從左到右對每乙隻bigbob進行1血的攻擊)攻擊後沒有任何乙隻bigbob死亡全部變為空地,則迴圈結束。

因為這道題的資料量很小又為了保險起見,所以我們採用暴力(模擬)。(這裡我要感謝一下作者~)

大體思路是:先列舉每乙個迴圈的初始狀態(最多154種情況),再判斷是否迴圈。

#include#include#includeusing namespace std;

long long k,s[40],t[11000],ans=0;

bool flag[16][16][16][16];//記錄已出現過的情況

inline void dfs(int x)

if(b==1) fflag=1;

b=max(b-1,0);

if(b)

if(c==1) fflag=1;

c=max(c-1,0);

if(c)

if(d==1) fflag=1;

d=max(d-1,0);

if(d)

if(a+b+c+d==0 || !fflag) return;//判單是否已結束

if(flag[a][b][c][d])//判斷是否出現過}}

for(int i=0;i<=k;i++)//列舉所有情況

}int main()

單調佇列 恐怖的奴隸主

description 在 爐石傳說 這款遊戲中,有一張隨從卡牌叫做 恐怖的奴隸主 這張卡牌的描述是這樣的 每當該隨從受到傷害且沒有死亡,召喚另乙個恐怖的奴隸主。還有一張卡牌叫做 旋風斬 描述是 對所有隨從造成1點傷害 使用 旋風斬 後,生命值變為0的 恐怖的奴隸主 並不會立即死亡,而會先結算召喚新...

規律 JZOJ 4222 恐怖的奴隸主

description 在 爐石傳說 這款遊戲中,有一張隨從卡牌叫做 恐怖的奴隸主 這張卡牌的描述是這樣的 每當該隨從受到傷害且沒有死亡,召喚另乙個恐怖的奴隸主。還有一張卡牌叫做 旋風斬 描述是 對所有隨從造成1點傷害 使用 旋風斬 後,生命值變為0的 恐怖的奴隸主 並不會立即死亡,而會先結算召喚新...

SSLOJ 恐怖的奴隸主 模擬 記憶化搜尋

小l熱衷於undercards.在undercards中,有四個格仔。每個格仔要麼是空的,要麼住著乙隻bigbob。每個bigbob有乙個不超過k的血量 血量減到0視為死亡。那個格仔隨即空 出。當乙隻bigbob受到傷害後,假如它沒有死亡且剩餘血量為t,它會從左數第 乙個空格處召喚乙隻血量為a t ...