【線上程式設計産品介紹】
阿裡雲開發者社群線上程式設計:
免費刷題大神器,助你拿到好offer
周賽月賽不停歇,做題還能領獎品
大賽筆試全真題,常做常新有驚喜
點選連結開始産品體驗:
https://developer.aliyun.com/coding 本文為大家介紹的是“121.Codancer的炸彈引爆”的解法探究。先來看一下題目内容:題目詳情
等級:困難
知識點:貪心、優先隊列
檢視題目:Codancer的炸彈引爆Codancer終于抵達了惡龍的城堡。現在他在城堡周圍擺放了n枚電力炸彈,每個電力炸彈有兩種屬性m和p,隻有已經引爆了m枚電力炸彈或者Codancer直接花費p的電力,第i枚炸彈才會被引爆,現在Codancer想使用最少的電力引爆所有的炸彈,請計算最少需要多少電力?
第一行是一個正整數n,代表有n枚電力炸彈。接下來輸入n行,每行兩個正整數m和p,代表炸彈的屬性。(1<=n<200000,1<=p<=100,1<=m<=n)
輸出最少花費多少的電力。
示例1
輸入:
3
[[1,5],[2,10],[2,8]]
輸出:
8
注意
花費8電力引爆第3枚炸彈,那麼第1枚就會被自動引爆,那麼第2枚也會被自動引爆。
解題方法:
這種方案的花費是最小的。

炸彈的引爆順序如圖所示。
本題使用貪心政策,考慮按照所需要的電力從大到小排序,假設從第i+1枚到第n枚炸彈已經用電力引爆的炸彈個數為cnt,由于在[1,i-1]最多再引爆i-1枚炸彈,如果此時
i-1+cnt<mi
,說明就需要再花費電力引爆,但是必須要選擇需要的電力最少的,是以可以用優先隊列維護,直接取出棧頂即可。
時間複雜度:O(n*log(n))
看完之後是不是有了答題思路了呢,快來練練手吧:
121.Codancer的炸彈引爆線上程式設計周賽、月賽火熱進行中,更有限時答題活動,定制衛衣、雙肩背包、機械鍵盤等多重好禮等你來拿~每天都有好禮相送~點選了解周賽詳情:
線上程式設計3月份比賽正式開啟!機械鍵盤等你拿!