1 条题解
-
0
优先选右端点小的; 先将区间按右端点从小到大排序; 选不重合的,且右端点小的,
#include<bits/stdc++.h> using namespace std; struct node{ int s;//左端点 int f;//右端点 //重置小于号运算符,右端点小的小 bool operator < (const node &x) const{ return f<x.f; } }a[1000005]; int n; int ans=0; int main() { cin>>n; for(int i=1;i<=n;i++){ cin>>a[i].s>>a[i].f; } sort(a+1,a+n+1);//按右端点从小到大排序 int t=0;//左端点的最小值 for(int i=1;i<=n;i++){//枚举每个线段 if (a[i].s>=t){//没有重合部分 ans++;//选之 t=a[i].f;//下一条线段左端点的最小值 } } cout<<ans; return 0; }
- 1
信息
- ID
- 613
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者