規律 JZOJ 4222 恐怖的奴隸主

2022-04-30 19:57:08 字數 1703 閱讀 9636

description

在《爐石傳說》這款遊戲中,有一張隨從卡牌叫做「恐怖的奴隸主」。這張卡牌的描述是這樣的:每當該隨從受到傷害且沒有死亡,召喚另乙個恐怖的奴隸主。還有一張卡牌叫做「旋風斬」,描述是「對所有隨從造成1點傷害」。使用「旋風斬」後,生命值變為0的「恐怖的奴隸主」並不會立即死亡,而會先結算召喚新的「恐怖的奴隸主」再結算生命值為0的「恐怖的奴隸主」的死亡。當然,使用旋風斬後,生命值變為0的「恐怖的奴隸主」不會召喚新的「恐怖的奴隸主」。隨從的數量是有上限的,在召喚乙個隨從前如果隨從數量已經達到上限則不會召喚。現在,如果隨從數量上限為k,最開始只有乙個生命值為m的「恐怖的奴隸主」,而且新召喚出來的「恐怖的奴隸主」的生命值也是m,那麼使用了n張「旋風斬」後還有多少個「恐怖的奴隸主」呢?

input

輸入共一行包含3個正整數n, m, k。

output

輸出共一行包含1個整數,表示使用n張旋風斬後「恐怖的奴隸主」的數量。

sample input

4 3 7
sample output

6

【樣例說明】

初始有1個生命值為3的「恐怖的奴隸主」。

第1次旋風斬後,召喚了1個「恐怖的奴隸主」,剩餘1個生命值為2的和1個生命值為3的。

第2次旋風斬後,召喚了2個「恐怖的奴隸主」,剩餘1個生命值為1的、1個生命值為2的和2個生命值為3的。

第3次旋風斬後,召喚了3個「恐怖的奴隸主」,然後1個生命值為0的死亡,剩餘1個生命值為1的、2個生命值為2的和3個生命值為3的。

第4次旋風斬後,試圖召喚5個「恐怖的奴隸主」,但隨從數量達到上限7,所以只召喚了1個,然後其中1個生命值為0的死亡,最後剩餘2個生命值為1的、3個生命值為2的和1個生命值為3的,共6個。

data constraint

對於10%的資料,n,k<=10^3;

另有15%的資料,n,m<=10^5;

另有25%的資料,m<=10^5;

另有20%的資料,10^8<=n,m,k<=10^9;

對於全部資料,n,m,k<=10^15。

看到題目就想到:所有人,都過來*n

然後比賽最後開暴力打表,發現了神奇的迴圈節,但是並沒有發現規律

然後%%%whh大爺發現了迴圈節神奇的規律:

當j=i%m+1(如果小於迴圈節開始位置就再加m+1)大於m s[i]=k-s[j-m]

否則直接為k

鬼知道為什麼,但是知道迴圈節開始位置如果小於等於m=1的話就全部補0,那也就是k了,這樣減少時空複雜度

#include #include 

using

namespace

std;

typedef

long

long

ll;const

int n=1e4+10

;ll n,m,k,q[n],s[n],cycle;

intmain()

if (m==1

) q[

0]=s[0]=1

;

for (int i=1;i<=n;i++)

}if (cycle==n||!cycle)

n=n%(m+1);if (n<=cycle) n+=m+1

; printf(

"%lld\n

",k-(n>=m?q[n-m]:0

));}

view code

恐怖的奴隸主 bob

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

單調佇列 恐怖的奴隸主

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

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

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