打膈膜 NOIP2016提高A組模擬10 15

2021-07-23 21:24:18 字數 1508 閱讀 2195

樣例輸入:

第一眼就是覺得,肯定是dp題,然而發現好難搞,然後就貪心的想了想(其實是打了太多遊戲所得到的經驗),明顯覺得群傷更優於重擊(多人時),然而不會證,就沒有打。

首先很明顯一定是先放技能更好。(^o^)/~。

50%:首先怪物生命從小到大排個序,我們一定得先在前面把技能放了。直接列舉放哪個技能就好了。這裡乙個小剪枝優化:就是當前怪物剩下1點血後,就必然放群攻。

對於技能,不需要暴力修改。

對於群攻,用乙個陣列記錄釋放過次數。

對於重擊,只要少加一回合答案即可。 時間o

(nlo

gn+2

m).80%:dp。

設 f[i][c][z][q] 表示現在有 i 點魔法值,正在打第 c 個怪(前 c−1 個 都打完了),對這個怪用了 z 次重擊,一共用過 q 次群攻,從現在到結束最少要多少生命。 可以得到 f[i][n + 1][z][q] = 0,答案是 f[m][1][0][0]。 當前怪的生命值是 hi −2z−q,如果選擇重擊,那麼從 f[i−1][c][z + 1][q] 轉移,如果選擇群攻,從 f[i−1][c][z][q + 1] 轉移。 時間複雜度 o(nlogn + nm2),空間可以用滾動陣列優化到 o(nm)。

100%(1):注意到一些優化:一是快速找到當前怪物***後,下乙個怪是誰;二是魔法值用完後要能 快速算答案。 這個時候總狀態數不會很多(2z + q 6 hi,i + z + q 6 m…),上界是 o(m^4),實際上幾乎是 o(m^3) 的。 寫雜湊或用 std::map 進行記憶化搜尋,時間複雜度 o(nlogn + m^3 logm)

100%(2):打過遊戲,知道群攻更賺。

當在場上怪物的人數超過2個時,就用群攻。等於2時隨意。等於1時用重擊。

這明顯正確。

NOIP2016提高組總結

這次noip可以用幾個字來形容 浪的飛起,頹的不行。中午從校門出發,在車上睡了半個車程。4 00左右,霧比較大,遠處的小蠻腰若隱若現。你好,廣州。5 00,symbol叫我們去看考場,結果被拒在門外,然後大家都散了。我與其它幾位小夥伴匆匆吃完飯,回到酒店,該看電視看電視,中途開會,提醒我們一些注意事...

NOIP2016 提高組 總結

這是倒數第三次noip了。今年我初三。去年的傷痕還未褪去,我在比賽前意識到,當務之急其實是鞏固基礎而非深究一些難題。於是賽前兩周,我認真讀了白書的前面部分,尤其重點練習了dp。dp作為基礎演算法之一,其靈活性極高,所以可以出得很難,也是各種比賽的寵兒。練好dp是尤為重要的。賽前好幾場模擬賽都做得很爛...

NOIP2016提高組總結

來到了廣州,不錯啊,旁邊的飯店很多,可以好好的腐一下了。一群人走進了乙個小巷,住進了乙個七天酒店,發現房間裡面好小啊。吃完飯後,一直都在腐敗。通知開會的同學並沒有到我們的房間來,結果在結束開會的前幾分鐘我們才過去。早早的睡了 第一天,狀態不錯。早早的到了考場。開啟c 發現除錯不了,嚇了我一大跳。做到...