傳送門題目
以奶牛開始吃草時間排序
可以發現,只要畜欄的最後一頭奶牛結束吃草時間越早,接上奶牛的可能性就越大
用小根堆,以畜欄的結束吃草時間實時排序
#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 行,每行乙個數,代表這頭牛安...