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

2021-10-13 18:31:36 字數 1060 閱讀 9501

ybtoj高效高階 貪心-3

有n頭牛在畜欄中吃草。每個畜欄在同一時間段只能提供給一頭牛吃草,所以可能會需要多個畜欄,給出第i頭牛開始吃草的時間區間[ai

,bi]

[a_i, b_i]

[ai​,b

i​] ,求需要的最少畜欄數和每頭牛對應的畜欄方案。

5

1 10

2 43 6

5 84 7

412

324

對每頭牛的開始時間從小到大排序

然後貪心?

對於第i個牛,它要麼是進新的畜欄,要麼是進已經沒牛的畜欄

1.進新的畜欄,那只有每個畜欄都有牛,才會開新的畜欄給這頭牛

2.進沒牛的畜欄,那就要對每個畜欄中的牛的區間用乙個小根堆去維護,然後判斷即可

#include

#include

#include

#include

#include

#include

using

namespace std;

int n, ans[

100005];

priority_queue int,

int>

, vectorint,

int>

>

, greaterint,

int>

>

> q;

struct tt

a[100005];

bool

cmp(tt a, tt b)

intmain()

//對應思路中的第一種情況

else

//第二種情況

}printf

("%d\n"

, q.

size()

);for(

int i =

1; i <= n;

++i)

printf

("%d\n"

, ans[i]);

}

ybtoj 貪心 堆 例題3 畜欄預定

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

YbtOJ高效高階 貪心 2 雷達裝置

ybtoj高效高階 貪心 2 有n nn個建築物,第i ii個建築物在笛卡爾座標系上的座標為 xi yi x i,y i xi y i 你需要在x xx軸上安裝一些雷達,每個雷達的偵察半徑均為d dd 要求每個建築物都至少被乙個雷達偵測到,求最少要安裝幾個雷達。3 2 1 2 3 1 2 12每個點...

YbtOJ高效高階 二分 3 最大均值

ybtoj高效高階 二分 3 給定正整數序列a 求乙個平均數最大的,長度不小於 l 的 連續的 子段。10 66 4 21038 59 416500顯然二分 那要不然為啥是二分練習題呢 我們二分出這個平均值 然後把數列中每個數都減去這個平均值 然後找是否有一段長度不小於l的且和不為負數的數段即可 i...