区间选点问题
Posted MT默哥的博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了区间选点问题相关的知识,希望对你有一定的参考价值。
题目描述
数轴上有\\(n\\)开区间\\((a_i,b_i)\\),请选择尽量多的区间,使其两两不相交。(开区间意味着,左右两个端点是不包含的)
输入格式
第一行\\(n(n \\le 1000000)\\) ,之后\\(n\\)行,每行两个数分别为\\(ai,bi\\),
输出格式
最少需要的点的个数
样例
样例输入1
3
1 3
2 4
3 5
样例输出1
1
数据范围
对于\\(20\\%\\)的数据,\\(n≤10\\);
对于\\(50\\%\\)的数据,\\(n≤1000\\);
对于\\(70\\%\\)的数据,\\(n≤100000\\);
对于\\(100\\%\\)的数据,\\(n≤1000000,0≤ai<bi≤1000000\\)。
代码
#include<bits/stdc++.h>
using namespace std;
struct node
int l,r;
;
node a[1000005];
bool cmp(node x,node y)
return x.r<=y.r;
int main()
int n;
cin >> n;
for(int i=1;i<=n;i++)
cin >> a[i].l >> a[i].r;
sort(a+1,a+n+1,cmp);
int ans=0;
int last=-1;
for(int i=1;i<=n;i++)
if(a[i].l>last)
ans++;
last=a[i].r;
cout << ans;
return 0;
本文来自小默的博客,转载请注明原文链接:https://www.cnblogs.com/momotrace/p/interval-point-selection.html
以上是关于区间选点问题的主要内容,如果未能解决你的问题,请参考以下文章