hihocoder 諾茲多姆

2021-07-06 09:42:56 字數 1331 閱讀 1766

時間限制:

1000ms

單點時限:

1000ms

記憶體限制:

256mb

wuzhengkai是乙個爐石傳說玩家。

有一天,他碰到對面上了個諾茲多姆並上了嘲諷和聖盾。

諾茲多姆是乙個有8點攻擊力和8點生命值的隨從,這意味著他能夠承受總量小於8點的傷害而不死亡,且對於任何攻擊他的單位造成8點傷害。

嘲諷意味著當諾茲多姆死亡之前你不能攻擊對方玩家。聖盾意味著諾茲多姆受到的第一次傷害為0,然後諾茲多姆失去聖盾。

諾茲多姆的能力是讓回合時間變為15s,這導致wuzhengkai來不及計算了。

wuzhengkai場上有一些隨從,每個隨從有其攻擊力和生命值,含義同上。

同時一些隨從也具有聖盾。一些隨從還具有風怒,使得他若在第一次攻擊後存活,則還能夠攻擊一次。

他想讓你幫忙算出這回合他能帶給對方玩家多少傷害。

輸入包含多組資料。

第一行乙個整數n,(0<=n<=7),表示wuzhengkai場上有n個隨從。

接下來n行,每行首先兩個整數att和hp(0接下來每行可能還有0~2個字母跟在這兩個整數之後。字母d表示聖盾,字母w表示風怒。

每行中的內容以乙個空格隔開。

對於每組資料,輸出乙個整數,表示wuzhengkai能對對方玩家造成的最大傷害。

樣例輸入

3

1 1 d w

8 84 2 d

樣例輸出 5

#include #include#include#include#includeusing namespace std;

struct ser

a[10];

int ans,n,num[10];

void dfs(int res,int hurt,int step,bool fir)

int i=num[step];

if(fir)

}dfs(res,hurt,step+1,fir);

}else

}dfs(res+a[i].att,hurt,step+1,fir);

dfs(res,hurt+a[i].att,step+1,fir);

}}int main()

{ char c;

while(scanf("%d",&n)!=eof)

{ans=0;

for(int i=0;i

首先乙個隨從攻擊一次之後,只要他能攻擊第二次,他就能滿足條件的情況下攻擊玩家,並且他的攻擊時間不必緊跟,可以在之後的任何時間攻擊。

對此,每次對單個隨從的攻擊做出一些假設,只要最終 諾茲多姆遭受超過8的攻擊就可以了,選取最終的最大值。

歐姆諾姆和糖果

一天,歐姆諾諾姆來到了朋友家裡,他發現了許多糖果。有藍色和紅色兩種。他知道每顆紅色糖果重wr克,每顆藍色糖果重wb克。吃一顆藍色糖果會給他帶來hb的歡樂值,吃一顆紅色糖果會給他帶來hr的歡樂值。歐姆諾姆最多只能吃c克的糖果,而且每一顆糖果不能只吃一半。現在他想通過吃藍色和紅色的糖果來獲得最大的歡樂值...

歐姆諾姆和項鍊

有一天,歐姆諾姆發現了一串長度為n的寶石串,上面有五顏六色的寶石。他決定摘取前面若干個寶石來做成乙個漂亮的項鍊。他對漂亮的項鍊是這樣定義的,現在有一條項鍊s,當s a b a b a a b a的時候是漂亮的,這兒a,b是一些寶石串,表示連線操作。s中有k 1個a和k個b組成。a和b可能是空串。現在...

1548 歐姆諾姆和糖果 51NOD

一天,歐姆諾諾姆來到了朋友家裡,他發現了許多糖果。有藍色和紅色兩種。他知道每顆紅色糖果重wr克,每顆藍色糖果重wb克。吃一顆藍色糖果會給他帶來hb的歡樂值,吃一顆紅色糖果會給他帶來hr的歡樂值。歐姆諾姆最多只能吃c克的糖果,而且每一顆糖果不能只吃一半。現在他想通過吃藍色和紅色的糖果來獲得最大的歡樂值...