区间问题:
区间选点问题
数轴上有N个闭区间[Ai, Bi]。取尽量少的点,使得每个区间内都至少有一个点(不同区间内含的点可以是同一个)。
#include <bits/stdc++.h> using namespace std; const int N =100005; #define ri register int struct dian{ int l,r; bool operator <(const dian &t)const { if(r==t.r) return l>t.l; return r<t.r; } }p[N]; int n,m,cent; int main(){ scanf("%d",&n); for(ri i=1;i<=n;i++) scanf("%d%d",&p[i].l,&p[i].r); sort(p+1,p+1+n); for(ri i=1;i<=n;i++) cent=1; int now=p[1].r; for(ri i=2;i<=n;i++) { if(p[i].l>now) cent++,now=p[i].r; } printf("%d\n",cent); }
输入
第1行:一个整数N(1 <= N <=100000)
接下来N行,每行2个整数Ai,Bi(-10^7 <= Ai < Bi < 10^7)
输出
第1行:一个整数,表示满足条件的最少点数。