1615:求区间

题目:
Description
在X轴上有n个闭区间,去掉尽可能少的区间使剩下的区间都不相交
Input
多组测试数据
第一行输入n(n<=1000)
接下来n行每行两个数a,b代表闭区间的两个端点。
(a,b<=1000000
Output
输出最小的删除的区间数
Sample Input
3
10 20
15 10
20 15
Sample Output
2


参考博客:https://blog.csdn.net/qq_41117236/article/details/81153752

思路:根据右边界做升序排序,每次作出的选择即为局部最优解,因为每一次的状态只依赖于前一次选取的状态,所以最后得到的结果为整体最优解。

AC代码:(侵删)

#include<vector>
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<map>
#include<algorithm>
using namespace std;
typedef long long ll;
const int maxn=300050;
struct qj{
    int x,y;
}q[maxn];
bool cmp(qj a,qj b){
    return a.y<b.y;
}
int main(){
   int t,temp;
    int m,n;
   while(~scanf("%d",&t)){
       for(int i=0;i<t;i++){
            scanf("%d%d",&q[i].x,&q[i].y);
            if(q[i].x>q[i].y) 
               temp=q[i].x, q[i].x=q[i].y, q[i].y=temp;
       }
   sort(q,q+t,cmp);
   int count=0,min=-1000005;
   for(int i=0;i<t;i++){
        q[i].x>min? min=q[i].y:count++;//重点 
        
    }
    printf("%d\n",count); 
    }
     return 0;
}
全部评论

相关推荐

菜鸡29号:根据已有信息能初步得出以下几点: 1、硕士排了大本和大专 2、要求会多语言要么是招人很挑剔要么就是干的活杂 3、给出校招薪资范围过于巨大,说明里面的薪资制度(包括涨薪)可能有大坑
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
02-16 22:33
杉川机器人 嵌入式工程师 18.0k*13.0, 年终奖1~9个月浮动
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务