排序要排右端点。
#include<bits/stdc++.h>
using namespace std;
#define fir(i,a,n) for(int i=a;i<=n;i++)
//======================
const int N=1e5+10;
struct node
{
int a,b;
}a[N];
int n;
bool cmp(node a,node b)
{
return a.b<b.b;
}
int main()
{
cin>>n;
fir(i,1,n)
{
int aa,bb;cin>>aa>>bb;
a[i]={aa,bb};
}
sort(a+1,a+1+n,cmp);
int ans=1;
int now=a[1].b;
for(int i=2;i<=n;i++)
{
//cout<<now<<" "<<a[i].b<<endl;
if(now<a[i].a)
{
now=a[i].b;ans++;
}
}
cout<<ans;
return 0;
}
这篇博客介绍了一个C++实现的排序算法,重点在于比较元素的右端点,通过自定义比较函数进行排序。代码中展示了如何读取数据,进行排序,并计算不连续段的数量。核心思想是遍历排序后的序列,更新当前连续段的最大右端点,统计段数。

393

被折叠的 条评论
为什么被折叠?



