POJ3614與優先佇列

2021-07-08 20:20:37 字數 930 閱讀 9066

優先佇列這個博主講的比較全

題意:

奶牛曬太陽,有下限和上限,要保證曬到上下限之間,每瓶防曬霜可以固定一頭奶牛曬到乙個固定值,求最多幾頭奶牛可以達到要求

要點;

先把奶牛按照最小值從小到大排序,在把防曬霜從小到大排序,從最小的防曬霜列舉,如果大於奶牛的最小值就把奶牛的最大值放入優先數列(從小到大),這樣的話每次只要比較優先數列的第一項與奶牛的最大值就可以了。這裡面也有貪心的思想,每次防曬霜優先塗最大值比較小的奶牛。

**如下:

#include 

#include

#include

#include

#include

#include

#include

#define maxn 3000

using

namespace

std;

struct node

;node cow[maxn], bot[maxn];

bool cmp(node a, node b)

struct cmp_temp //結構體控制優先佇列小的數優先度高

};priority_queue, cmp_temp>que; //優先佇列的定義函式宣告

int main()

while (bot[i].max&&que.size())//確保防曬霜沒用完

que.pop();//不管符不符合佇列中都有乙個元素出隊

}}

printf("%d\n", ans);

}return

0;}

心得:

優先數列感覺就是乙個已經封裝好的函式,你把資料放進去會自動幫你排好序,用的時候呼叫就可以了,好像是用堆來實現的,按最小和最大的好像跟堆一模一樣,但如果按其他的(比如按個位數大小之類的)就不知道了

POJ 3614 優先佇列

題意 傳送門 poj 3614 對防曬霜按 spf 公升序排序,每次處理當前防曬霜,就將所有 spf 小於等於該 spf 值的牛入隊,此時入隊的牛也是其後處理的防曬霜的可能塗抹物件。為了使防曬的牛數量最大,當前處理的防曬霜選擇優先佇列中 spf 最大值最小的牛進行塗抹。include include...

POJ3614 貪心 優先佇列

題意 m頭牛每頭牛有minspf和maxspf,n種spf為spf i 的防曬霜每種l i 瓶,盡可能給數量多的牛塗防曬霜,每頭牛最多塗一瓶。思路 貪心想法,實現是每次取出minspf spf i 的牛加入優先佇列中,優先佇列以牛的maxspf為優先,給maxspf spf i 且maxspf從小開...

POJ 3614 Sunscreen 優先佇列

題目大意 給你一些母牛,母牛有能容忍日光浴的最小和最大光照強度。每只母牛可以塗一次spf,spf可以將母牛可以承受的光照強度固定在某個地方。現在給你母牛的最小和最大值和不同的spf的光照強度及其數量,求最多可以有多少母牛享受日光浴?思路 優先佇列。先按母牛最小承受的排好,然後spf的值也從小到大。接...