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

2021-09-25 23:25:42 字數 1716 閱讀 1238

小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。

#include

#include

#include

using

namespace std;

const

int n=

655360

;int k,ans,at[20]

,rz[n]

,dd[n]

,jyh[n]

;intzh(

int a,

int b,

int c,

int d)

//(算是一種壓縮?)

intcz

(int a,

int b,

int c,

int d)

//大模擬

else pd=1;

}if(b)else pd=1;

}if(c)else pd=1;

}if(d)else pd=1;

}if(!pd)

return-1

;return

zh(a,b,c,d);}

void

dfs(

int x)

//記憶化搜尋if(

!jyh[rz[x]])

dfs(rz[x]);

if(dd[rz[x]]==

2) dd[x]=2

;else dd[x]=1

;}intmain()

恐怖的奴隸主 bob

試題3 恐怖的奴隸主 bob 源 bob.cpp 輸入檔案 bob.in 輸出檔案 bob.out 時間限制 1s 空間限制 512mb 小l熱衷於undercards.在undercards中,有四個格仔。每個格仔要麼是空的,要麼住著乙隻bigbob。每個bigbob有乙個不超過k的血量 血量減到...

單調佇列 恐怖的奴隸主

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

規律 JZOJ 4222 恐怖的奴隸主

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