来源:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1428
首先按照开始时间从小到大排序.
其实只要维护一个结束时间的最小堆,每次比较开始时间和堆中最小时间的大小,如果比它大就放入堆中并且时间就要变成当前任务的结束时间,
否则就要新开一个教室.并且把结束时间加入堆中,注意判断堆是否为空.
#includeusing namespace std;const int maxn = 1e5+10;struct node{ int l,r; bool operator<(const node & a)const { return l < a.l; }}s[maxn];int main (){ int n;scanf("%d",&n); for(int i=0;i