在一个数轴上有n条线段,线段的端点均为数轴上的整数点。

现在请你删除尽量少的线段,使得剩下的线段不相交。

输出剩下的线段数

输入规模较大,建议使用读入优化
输入
第一行一个整数n
接下来n行,每行两个整数x,y表示线段的端点坐标
输出
一行一个整数表示剩下的线段的最大数量。

数据范围
对于40%的数据: n<=3000
对于80%的数据: n<=100000
对于100%的数据: n<=2000000,0<=端点坐标<=1000000
输入样例
输入样例1:
3
6 3
1 3
2 5
输入样例2:
10
90 351
578 742
99 836
212 606
552 89
585 20
495 803
750 760
874 878
550 273
输入样例3:
10
650 154
598 443
325 950
144 908
454 284
728 46
506 222
475 826
743 198
340 998
输出样例
输出样例1:
2
输出样例2:
4
输出样例3:
2

情况:两个测试用例超时

问题:数组开小了,刚开始开了1百万的数组,发现数据最大200万const int maxn=2e6+10

分析

ac代码

#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
const int maxn=2e6+10;struct node{int left,right;
}a[maxn];//快读
int read(){int k=0,f=1;char c=getchar();while(c<'0'||c>'9'){if(c=='-')//读入负数 f=-1;c=getchar();}while(c>='0'&&c<='9'){k=10*k+c-'0';c=getchar();}return f*k;
}bool cmp(node a,node b){if(a.left==b.left)return a.right<b.right; return a.left<b.left;
} int main(){int n,x,y,result=0;cin>>n;for(int i=0;i<n;++i){//小的放前面 x=read(),y=read();if(x>y) x^=y^=x^=y;//swap也不行 a[i].left=x,a[i].right=y;}sort(a,a+n,cmp);//左端点从小到大排列result++;//第一条一定放int now=a[0].right;//保存当前右端点for(int i=1;i<n;i++){if(a[i].left>=now){result++;now=a[i].right;//更新右端点 }else{if(a[i].right<=now){//完全覆盖 //贪心,留着短的那一条now=a[i].right; }//else //没有完全覆盖,舍弃当前线段,不做处理            }} cout<<result<<endl;}

线段覆盖加强版(快速+贪心)相关推荐

  1. 【满分】【华为OD机试真题2023 JAVAJS】最少数量线段覆盖

    华为OD机试真题,2023年度机试题库全覆盖,刷题指南点这里 最少数量线段覆盖 知识点排序贪心 时间限制:1s 空间限制:256MB 限定语言:不限 题目描述: 给定坐标轴上的一组线段,线段的起点和终 ...

  2. ACM公选课第五节贪心4.14-5.4补+第六节上贪心线段覆盖

    每一步都不从全局,找当下就好 特征(还有dp基础) 求解(比如最小生成树那个) 伪代码 就是每个房间的比例都不一样 要靠经验 事件序列问题(dp贪心经典题) 用贪心解,最先结束的,后面选最先结束且不重 ...

  3. P1803 凌乱的yyy / 线段覆盖

    P1803 凌乱的yyy / 线段覆盖 https://www.luogu.org/problemnew/show/P1803 提交 题目提供者 yyy2015c01 嘤嘤嘤 评测方式 云端评测 标签 ...

  4. sdut 2074 区间覆盖问题(贪心)

    区间覆盖问题 Time Limit: 1000MS Memory limit: 65536K 题目描述 用i来表示x坐标轴上坐标为[i-1,i]的长度为1的区间,并给出n(1≤M≤200)个不同的整数 ...

  5. 线段覆盖(洛谷P1803题题解,C++语言描述)

    题目要求 P1803题目链接 分析 这题是一个线段覆盖问题,但并不是很复杂,也是贪心思想. 想要尽可能放线段,不能重合(可以正好相交),那就可以每一次只关注右端点,尽可能地选择剩余未选的线段中右端点最 ...

  6. 【codevs30123037】线段覆盖4、5,姗姗来迟

    3012 线段覆盖 4 时间限制: 1 s 空间限制: 64000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 数轴上有n条线段,线段的两端都是整数坐标, ...

  7. 1214线段覆盖问题——贪心法

    题目描述: 给定x轴上的N(0<N<100)条线段,每个线段由它的二个端点a_I和b_I确定,I=1,2,--N.这些坐标都是区间(-999,999)的整数.有些线段之间会相互交叠或覆盖. ...

  8. 信息学奥赛一本通 1323:【例6.5】活动选择 | 1422:【例题1】活动安排 | 洛谷 P1803 凌乱的yyy / 线段覆盖

    [题目链接] ybt 1323:[例6.5]活动选择 ybt 1422:[例题1]活动安排 洛谷 P1803 凌乱的yyy / 线段覆盖 注意:ybt 1323数据个数最大为 1 0 3 10^3 1 ...

  9. luogu P1803线段覆盖

    luogu P1803 线段覆盖 (典型的贪心:在所有区间中能够选择多的区间的个数) 思路:比较简单易想:每次选择新区间时,仅需在所有符合条件的区间选择右端点最小的区间,因为这样可以保证下一次选择时可 ...

最新文章

  1. AOC的显示器真的很烂
  2. 开3389后不能登录的六种原因
  3. 基本数据类型与表达式5 - 零基础入门学习Delphi06
  4. java如何读取rfid的数据_100G 数据如何先随机读取1%?
  5. 自我引用(Self reference)
  6. 查看docker容器日志
  7. 使用 Chrome 调试 Vue3 的 TypeScript 源码
  8. Android游戏SQL注入,关于Android contentprovider sql注入问题
  9. 重置浏览器的css,css重置浏览器默认样式
  10. JUCE-VST-001 JUCE的下载与安装
  11. jdbc常见异常及错误解决办法汇总
  12. 计算机知识演讲稿,乔布斯的演讲稿 我们的IT梦想
  13. 一、开水白菜(steamed Chinese cabbage in supreme soup)
  14. 如何识别哭泣csdn_【jji技术】语音识别工程实战:聊聊语音芯片选型
  15. 黄哥python培训骗局
  16. 【Vmware】 CentOS 8 安装教程
  17. DataX数据同步工具使用
  18. 北京林业大c语言程序设计考试试题,2016年北京林业大学信息学院程序设计语言、数据结构(上机操作)复试笔试最后押题五套卷...
  19. 刘未鹏:为什么你应该(从现在开始就)写博客
  20. 8倍的观察镜系统设计

热门文章

  1. Jquery中css()方法获取边框长度
  2. 扩展gcd codevs 1200 同余方程
  3. java selenium (十) 操作浏览器
  4. (2) 假设字符串类似这样的aba和aab就相等,现在随便给你二组字符串,请编程比较他们看是否相等...
  5. Spring.Net 能为我们做点什么
  6. php 单词替换,如何在PHP中替换字符串中的单词?
  7. KEIL MDK 仿真时程序”乱跑“问题
  8. stm32 常见错误及原因【持续更新】
  9. 如何将ISE的库和vivado的库都加入modelsim.ini
  10. Flocking for Multi-Agent Dynamic Systems:Algorithms and Theory