题目描述:
设有 nn 个活动的集合 E={1,2,…,n}E={1,2,…,n},其中每个活动都要求使用同一资源,如演讲会场等,而在同一时间内只有一个活动能使用这一资源。
每个活动 ii 都有一个要求使用该资源的起始时间 sisi 和一个结束时间 fifi,且 si<fisi<fi。
如果选择了活动 ii,则它在时间区间 [si,fi)[si,fi) 内占用资源。
若区间 [si,fi)[si,fi) 与区间 [sj,fj)[sj,fj) 不相交,则称活动 ii 与活动 jj 是相容的。
也就是说,当 fi≤sjfi≤sj 或 fj≤sifj≤si 时,活动 ii 与活动 jj 相容。
选择出由互相兼容的活动组成的最大集合。
输入格式
第一行一个整数 nn;
接下来的 nn 行,每行两个整数 sisi 和 fifi。
输出格式
输出互相兼容的最大活动个数。
数据范围
1≤n≤10001≤n≤1000
输入样例:
4 1 3 4 6 2 5 1 7
输出样例:
2
AC代码:
#include<bits/stdc++.h>
using namespace std;
struct cmp{
bool operator()(pair<int,int>a, pair<int,int>b){
return a.second > b.second;