贪心

   区间问题:

      区间选点问题 

        数轴上有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行:一个整数,表示满足条件的最少点数。

     

   

 

 

 

       

上一篇:cent os 部署blade


下一篇:21:动量与学习率衰减