暗黑破壞神二(Diablo II)是一款有名的動作角色扮演遊戲。在遊戲你可以扮演法師、聖騎士等等不同的職業來殺怪、解謎。這個遊戲的特色在於,每種職業都有他獨特的技能系統,當你等級越高,你可以練的技能就越多,就可以有更多的方法來解決怪物。我們現在將暗黑破壞神裡的技能系統詳細說明:
現在問題來了。小瑋新接觸這個遊戲,他聽別人說,法師只要練了
如果小瑋的法師想要變天下無敵,他至少要付出如圖二所標的,共
你現在的任務就是要寫個程式,來解決這樣的問題:給你一個技能系統、欲練成的技能與點數,看看至少要到等級多少才能練成。
輸入檔包含了多筆的測試資料。每一筆測試資料的內容如下:
技能名稱 技能等級 前置技能個數 前置技能1 前置技能2 ......
例如:
meteor 24 2 fire_wall fire_ball
敘述著 meteor
(隕石)這個技能,是等級 fire_wall
(火牆),另一個是 fire_ball
(火球)。
再舉一個例子:
fire_mastery 30 0
表示說 fire_mastery
(支配火燄)這個技能,是等級
你可以假設技能的名字裡不會有空白,且長度不會超
欲練技能 欲練點數
例如:
fire_ball 20
meteor 20
fire_mastery 20
warmth 10
這四行就表示說,希望將 fire_ball, meteor, fire_mastery
這三個技能練到 warmth
這個技能練到
以上的這
輸入檔以
對於每一筆測試資料,依序輸出 (i) 一個整數,代表「人物至少要到幾級才能練成測資要求的情況」;或是 (ii) 輸出字串 IMPOSSIBLE
,如果人物到了
請每行輸出恰一組測資的答案。
10 fire_bolt 1 0 warmth 1 0 inferno 6 0 blaze 12 1 inferno fire_ball 12 1 fire_bolt fire_wall 18 1 blaze enchant 18 2 fire_ball warmth meteor 24 2 fire_wall fire_ball fire_mastery 30 0 hydra 30 1 enchant 4 fire_ball 20 meteor 20 fire_mastery 20 warmth 10 2 hide 1 0 sneak 6 1 hide 1 sneak 2 2 skeleton 1 0 skeleton_mastery 1 1 skeleton 1 skeleton_mastery 20 2 a 1 0 b 1 0 2 a 50 b 50 0
75 7 22 IMPOSSIBLE
在範例輸入裡共有四筆測資。第一筆測資跟最前面題目所舉例的情況是一模一樣的,可以對照圖一作參考。
第二筆測資,雖然在等級 sneak
,而練完一點還會剩下三點未使用(等級 hide
,升等級 sneak
還剩三點),但是根據前面「等級 sneak
上,必須要到等級 sneak
上。
第三筆測資,在升等級 skeleton
上;升等級 skeleton_mastery
上,以後每升一級還是照樣把新得到的技能點放在 skeleton_mastery
。所以升到等級 skeleton_mastery
就可以點到二十點。(而且此時不會有多餘的技能點可用)
第四筆測資,因為人物到了 IMPOSSIBLE
。
2022/06/02 Update by FHVirus: 你可以假設輸入中,對於每一個技能,其前置技能都會較早被輸入。
原TIOJ1050 / NPSC2003決賽(prob F)
No. | Testdata Range | Score |
---|---|---|
1 | 0 | 100 |