基础贪心
和安排教室一个思路
多线程往下安排即可
#include <iostream>
#include <algorithm>
using namespace std;
const int MAXN = 1e5 + 10;
struct bn
{
int beg, end;
}arr[MAXN];
struct sstat
{
int beg, end;
}brr[MAXN];
int tf = 1;
bool cmp(bn a, bn b)
{
if(a.beg != b.beg)
return a.beg > b.beg;
return a.end > b.end;
}
int main()
{
int n;
cin>>n;
for(int i = 0; i < n; i++)
{
cin>>arr[i].beg>>arr[i].end;
}
sort(arr, arr + n, cmp);
//for(int i = 0; i < n; i++)
// cout<<arr[i].beg<<' '<<arr[i].end<<endl;
brr[0].beg = arr[0].beg;
brr[0].end = arr[0].end;
for(int i = 1; i < n; i++)
{
for(int j = 0; j < tf; j++)
{
if(arr[i].beg <= brr[j].beg && arr[i].end <= brr[j].end)
{
brr[j].beg = arr[i].beg;
brr[j].end = arr[i].end;
goto l1;
}
}
brr[tf].beg = arr[i].beg;
brr[tf++].end = arr[i].end;
l1:
continue;
}
cout<<tf<<endl;
return 0;
}