AcWing 145 超市 146 序列

2021-10-10 01:29:33 字數 1735 閱讀 8496

商品有保質期和價值,要在保質期內把商品賣出才有收入,每天只能賣一件,問產品的的最大利益是多少

這道題目,我們很容易發現是有乙個貪心策略,也就是對於 t 天,我們需要在保證不賣出過期商品的前提下,賣出利潤前t大的商品.所以呢,我們可以把商品按照保質時間排序,然後建立乙個小根堆,對於每乙個數而言,如果說它的過期時間大於當前小根堆的個數,那麼我們可以直接將這個貨物的價值加入進來,如果說當前過期時間正好等於這個小根堆堆內的個數,那麼我們就需要對比一下,如果說這個貨物的價值,是高於小根堆的堆頂的話,那麼我們就將小根堆堆頂彈出,然後壓入我們這個新貨物,因為新貨物明顯是更加優於堆頂的老貨物的

m 行n列的乙個數矩陣,每行抽乙個數,可以同列,那麼有n*m種組合,在這些組合中,找出和最小的n個組合

直接乙個i指標指向a陣列將b陣列直接全部放到堆中然後取出,更新堆中資料

乙個pair即可勝任配合小根堆**極其簡潔。

#include

using

namespace std;

typedef

long

long ll;

const

int maxn=

1e6+10;

typedef pair<

int,

int> pii;

int n,m,t;

int a[maxn]

,b[maxn]

,c[maxn]

;void

merge()

);int cnt =1;

while

(cnt<=n));

}for

(int i=

1;i<=n;i++

) a[i]

= c[i];}

intmain()

sort

(a+1

,a+1

+n);

m--;while

(m--

)for

(int i=

1;i<=n;i++

) cout<

<<

" ";

cout<

}}

AcWing 145 超市 貪心

有n個商品,商品有 和過期時間,在過期時間之前才可以賣出,每天只能賣乙個。求最大利潤。假如直接對過期時間排序然後貪心會wa。事實上先把所有物品按過期時間排序,把商品的 放進小頂堆裡面,檢測到乙個商品的過期時間 當前堆的大小時,說明現在的時間不夠 所有的商品,就把 最小的丟掉。為什麼這樣的對的呢?每次...

14 5繼承與組合

程式的版權和版本宣告部分 檔名稱 a.cpp 作 者 孔雲 完成日期 2014年5月29日 版 本 號 v1.0 輸入描述 num,name,year,month,day 和修改後的year,month,day 問題描述 1 birthdate 生日類 含有 year,month,day 等資料成員...

1 4 5 收集trace日誌

trace日誌有助於發現故障的詳細資訊,確認問題原因 影響範圍 故障現象。前提條件 alert日誌提及到的一些trace日誌和incident trace檔案,要一併收集。操作步驟 步驟 1 以oracle使用者登入。步驟 2 根據alert日誌中提示所涉及的trace日誌檔案,收集trace日誌。...