ybtoj 貪心 堆 例題3 畜欄預定

2021-10-12 22:53:00 字數 931 閱讀 6999

傳送門題目

以奶牛開始吃草時間排序

可以發現,只要畜欄的最後一頭奶牛結束吃草時間越早,接上奶牛的可能性就越大

用小根堆,以畜欄的結束吃草時間實時排序

#include 

#include

#include

#include

using namespace std;

struct dt

a[50100

], t;

int n, ans[

50100

], num;

bool cmp

(const

dt& k,

const

dt& l)

//小根堆用結構體的用法(我也不懂為什麼這麼寫)

bool operator<

(dt a,

dt b)

//以結束吃草時間排序

//return a.y < b.y; 就是大根堆了,好奇妙

int main()

sort

(a +

1, a +

1+ n, cmp)

; priority_queue<

dt> f;

f.push

(a[1])

, ans[a[1]

.i]=

++num;

//ans標記在哪個畜欄裡

for(int i =

2; i <= n; i++)}

printf

("%d\n"

, f.

size()

);for(int i =

1; i <= n; i++

)printf

("%d\n"

, ans[i]);

}

YbtOJ高效高階 貪心 3 畜欄預定

ybtoj高效高階 貪心 3 有n頭牛在畜欄中吃草。每個畜欄在同一時間段只能提供給一頭牛吃草,所以可能會需要多個畜欄,給出第i頭牛開始吃草的時間區間 ai bi a i,b i ai b i 求需要的最少畜欄數和每頭牛對應的畜欄方案。5 1 10 2 43 6 5 84 7412 324對每頭牛的開...

畜欄預定(貪心)

有n頭牛在畜欄中吃草。每個畜欄在同一時間段只能提供給一頭牛吃草,所以可能會需要多個畜欄。給定n頭牛和每頭牛開始吃草的時間a以及結束吃草的時間b,每頭牛在 a,b 這一時間段內都會一直吃草。當兩頭牛的吃草區間存在交集時 包括端點 這兩頭牛不能被安排在同乙個畜欄吃草。求需要的最小畜欄數目和每頭牛對應的畜...

貪心 Ybt 畜欄預定

同一時間內,乙個畜欄只能供一頭牛使用。給出一些牛需要使用畜欄的時間段,讓你求使用的最少畜欄數量與安排方案。輸入第一行乙個 n 代表牛的數量 接下來 2 n 1 行,每行兩個數,代表這頭牛使用畜欄的起始時間與結束時間。輸出第一行乙個數,代表最少畜欄數量。接下來 2 n 1 行,每行乙個數,代表這頭牛安...