活动选择
[ybt 1323](http://ybt.ssoier.cn:8088/problem_show.php?pid=1323)
浅显易懂经典的不重叠集合问题
每次找到最小的右边界,那么其他左边界小于选出右边界的集合已经重合
如果找到左边界大于等于此时右边界的集合,那么这是一个新的独立不重叠的集合,计数器更新,并更新选出右边界
注意计数器初始值应为1
代码如下
```cpp
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
const int N=1009;
int n;
struct Q{int begin,end;}f[N];
bool cmp(Q a,Q b){return a.end<b.end;}
int main(){
cin>>n;
for(int i=1;i<=n;i++)
cin>>f[i].begin>>f[i].end;
sort(f+1,f+n+1,cmp);
int m=f[1].end,ans=1;
for(int i=2;i<=n;i++){
if(f[i].begin>=m)m=f[i].end,ans++;
}
cout<<ans;
return 0;
}
```

浙公网安备 33010602011771号