poj3190區間類貪心 優先佇列

2022-05-13 10:28:45 字數 1123 閱讀 3401

題意:每個奶牛產奶的時間為a到b,每個奶牛產奶時要占用一間房子,問n頭奶牛產奶共需要多少房子,並輸出每頭奶牛用哪間房子

分析:這題就是乙個裸的貪心,將奶牛按開始時間進行排序即可,但考慮一下資料範圍,我們可以用乙個優先佇列來進行維護,在優先佇列中我們按照奶牛的結束時間最小構造小頂堆,然後判斷新進來的元素的開始時間是否比最小的結束時間大,若是,加入佇列,修改佇列,若不是,加入對列,並且計數加1

注意自定義型別的優先佇列的維護方法。詳見:

1 #include 2 #include 3 #include 4 #include 

5 #include 6 #include 7 #include

8 #include 9 #include 10 #include 11 #include 12 #include 13

using

namespace

std;

14const

int maxn=50050;15

//注意自定義型別在優先佇列中的用法

16 typedef structp17

23}p;

24p point[maxn];

25bool

cmp(p a,p b)

2629

intt[maxn];

30int

main()

3140 memset(t,0,sizeof

(t));

41 sort(point,point+n,cmp);

42 priority_queueque;

43int r=0; //

統計個數

44 que.push(point[0

]);45 t[point[0].id]=++r;

46for(int i=1;i)

4754

else58}

59 cout

60for(int i=0;i)

61 printf("

%d\n

",t[i]);62}

63return0;

64 }

view code

poj3190 區間貪心 STL

題意 n頭任性的牛,每頭牛都要在自己的時間段裡擠奶,問最少用多少個擠奶槽並輸出每頭牛所在的擠奶槽的編號 從1開始 思路 目標明確,求最少用多少奶槽,並輸出如何分配,明顯區間貪心,找貪心的方向,就是對時間的最末端進行貪心。簡單來說,先把奶牛們的時間輸入並按開始時間進行排序,然後依次把有序的時間段都放入...

poj 3190 優先佇列 貪心

題意 有n頭牛,分別給他們擠奶的時間。然後每頭牛擠奶的時候都要在乙個stall裡面,並且每個stall每次只能占用一頭牛。問最少需要多少個stall,並輸出每頭牛所在的stall。e.g 樣例 input 5 1 10 2 43 6 5 84 7 output 412 324 hint explan...

POJ 1328 區間貪心,幾何

題目大意 以x軸為分界,y 0部分為海,y 0部分為陸地,給出一些島嶼座標 在海中 再給出雷達可達到範圍,雷達只可以安在陸地上,問最少多少雷達可以覆蓋所以島嶼。include include include includeusing namespace std int n,m struct node...