畜欄預定(貪心)

2021-09-11 12:16:05 字數 1048 閱讀 2964

有n頭牛在畜欄中吃草。

每個畜欄在同一時間段只能提供給一頭牛吃草,所以可能會需要多個畜欄。

給定n頭牛和每頭牛開始吃草的時間a以及結束吃草的時間b,每頭牛在[a,b]這一時間段內都會一直吃草。

當兩頭牛的吃草區間存在交集時(包括端點),這兩頭牛不能被安排在同乙個畜欄吃草。

求需要的最小畜欄數目和每頭牛對應的畜欄方案。

輸入格式

第1行:輸入乙個整數n。

第2..n+1行:第i+1行輸入第i頭牛的開始吃草時間a以及結束吃草時間b,數之間用空格隔開。

輸出格式

第1行:輸入乙個整數,代表所需最小畜欄數。

第2..n+1行:第i+1行輸入第i頭牛被安排到的畜欄編號,編號從1開始,只要方案合法即可。

資料範圍

1≤n≤500001≤n≤50000,

1≤a,b≤10000001≤a,b≤1000000

輸入樣例:

5

1 10

2 43 6

5 84 7

輸出樣例:

412

324

ac**: 

#include using namespace std;

#define int long long

const int maxn=50000+10;

pair,int>cows[maxn];

int id[maxn];

int n;

signed main()

sort(cows,cows+n);

priority_queue,vector>,greater> >heap;

for(int i=0;i=cow.first);

id[cows[i].second]=stall.second;

heap.push(stall);

}else

}cout

}

貪心 Ybt 畜欄預定

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

ybtoj 貪心 堆 例題3 畜欄預定

傳送門題目 以奶牛開始吃草時間排序 可以發現,只要畜欄的最後一頭奶牛結束吃草時間越早,接上奶牛的可能性就越大 用小根堆,以畜欄的結束吃草時間實時排序 include include include include using namespace std struct dt a 50100 t int...

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對每頭牛的開...