演算法 貪心問題

2021-09-23 14:27:50 字數 501 閱讀 2027

問題ia:

做專案最大收益問題:

給定初始啟動資金,w,最多可攬的專案數k

再給n個專案,啟動資金要求和收益。

貪心思想,時間o(klogn)

維護乙個收益大根堆,費用小根堆。

初始所有專案扔到收益大根堆中,按貪心思想依次挑選,若超過啟動資金,則彈出扔到費用小根堆中,每當啟動資金更新時,考察一下費用小根堆中的專案,將滿足要求的專案再次扔到大根堆中。

注:k次挑選只挑選大根堆中的專案。

問題b:

分金條的最小花費:

規則為:長度為l分成任意長度的兩塊,需要l費用。

給定arr陣列,arr[i]表示需要的到的長度,滿足sum = l

貪心解法,時間o(nlogn)

稍微思考發現,盡量平衡分割費用最小,所以採用哈夫曼思想。

由於一刀只能切兩半,這裡採用逆向思維,維護乙個小根堆,每次彈出兩個元素a,b,sum = a+b,ans+=sum,然後再把sum填回小根堆中,直到堆中只剩乙個元素。

演算法初步 貪心 基本貪心問題詳解

1 區間不相交問題 描述 給出n個開區間 x,y 從中選擇盡可能多的開區間,使得這些開區間兩兩沒有交集。如給出區間 1,3 2,4 3,5 6,7 貪心策略 很容易想到,如果我們想讓n個區間中的子區間越多越好,那麼肯定子區間的長度越短越好,這樣才能有更大的剩餘空間留給其它空間,如果乙個區間就佔了 1...

貪心演算法,過載問題

說明 執行環境 ubuntu input.txt 6 50 2 3 13 8 80 20 裝入的資料是 2 3 8 13 20 output.txt 5 源 include include include include include define n 20 快速排序遞迴,a代表陣列,low代表陣...

貪心演算法 裝箱問題

貪心演算法中必須設定乙個貪心準則 來尋求每一步的最優解,但最後往往不是問題的整體最優解。問題 假設有n個物品,其體積為v1,v2,v3,v4.v n,有若干個體積為v的箱子 理論物品的體積應該小於箱子的體積 要求把所有物品全部裝入箱子中,要求開啟的箱子數最少。分析 怎樣合理化分配才能使得開啟的箱子數...