题目链接
题解:
这是一个贪心问题,时间区间都是闭区间包含两端。定义一个优先队列,让结束时间早的优先级高,保证了取出的都是结束时间最早的,如果一头牛的开始时间大于取出的牛的结束时间,那么这两头牛可以用一个畜栏,并且把队列第一个pop掉,否则增加一个新的畜栏,把这个新的牛加进队列。
代码:
#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<queue>
using namespace std;
const int MAX_N=5e4+7;
struct node
{
int x,y,id;
bool operator <(const node &a)const //重载小于号。
{
return y>