日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > c/c++ >内容正文

c/c++

Acwing145. 超市[C++题解]:贪心

發(fā)布時(shí)間:2025/4/5 c/c++ 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Acwing145. 超市[C++题解]:贪心 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

      • 本題思路
      • 題目鏈接

本題思路

題目重述:給定n件商品的利潤(rùn)和過(guò)期時(shí)間,每天只能賣1件,問(wèn)最大利潤(rùn)是多少。

題目思路:
貪心。 需要按照過(guò)期時(shí)間從早到晚排序。如果過(guò)期時(shí)間是3天的商品有≤3件商品賣掉是沒(méi)問(wèn)題的;問(wèn)題出在過(guò)期時(shí)間是m天,結(jié)果商品有>m件(heap.size()>p.first),這時(shí)候需要舍棄一些商品,貪心策略是每次舍棄利潤(rùn)最低的商品
維護(hù)一個(gè)vector< pair<int,int>> vec,vec里面第一關(guān)鍵字存過(guò)期時(shí)間,第二關(guān)鍵字存利潤(rùn);和一個(gè)小根堆heap,heap里面存的是商品的利潤(rùn)。

過(guò)程:
先排序,后插入到小根堆,最后便利小根堆得到利潤(rùn)之和即可。

ac代碼

#include<bits/stdc++.h> using namespace std;int n; typedef pair<int,int> PII;int main(){while(cin>>n){int res=0;vector<PII> vec(n);priority_queue<int,vector<int>,greater<int>>heap; //小根堆for(int i=0;i<n;i++) cin>>vec[i].second>>vec[i].first; //first是過(guò)期時(shí)間sort(vec.begin(),vec.end());//默認(rèn)按照第一關(guān)鍵字排序,從小到大//按照過(guò)期時(shí)間從小到大排序//遍歷vecfor(auto p:vec){heap.push(p.second); //利潤(rùn)放進(jìn)來(lái)if(heap.size()>p.first){ //今天到期的物品超過(guò)限度heap.pop();}}while(heap.size()){res+=heap.top();heap.pop();}cout<<res<<endl;}}

題目鏈接

145. 超市

超市里有N件商品,每件商品都有利潤(rùn)pi和過(guò)期時(shí)間di,每天只能賣一件商品,過(guò)期商品不能再賣。

求合理安排每天賣的商品的情況下,可以得到的最大收益是多少。

輸入格式
輸入包含多組測(cè)試用例。

每組測(cè)試用例,以輸入整數(shù)N開始,接下來(lái)輸入N對(duì)pi和di,分別代表第i件商品的利潤(rùn)和過(guò)期時(shí)間。

在輸入中,數(shù)據(jù)之間可以自由穿插任意個(gè)空格或空行,輸入至文件結(jié)尾時(shí)終止輸入,保證數(shù)據(jù)正確。

輸出格式
對(duì)于每組產(chǎn)品,輸出一個(gè)該組的最大收益值。

每個(gè)結(jié)果占一行。

數(shù)據(jù)范圍
0≤N≤10000,
1≤pi,di≤10000
最多有14組測(cè)試樣例

輸入樣例:
4 50 2 10 1 20 2 30 1

7 20 1 2 1 10 3 100 2 8 2
5 20 50 10
輸出樣例:
80
185

總結(jié)

以上是生活随笔為你收集整理的Acwing145. 超市[C++题解]:贪心的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。