线段覆盖加强版(快速+贪心)
在一个数轴上有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;}
线段覆盖加强版(快速+贪心)相关推荐
- 【满分】【华为OD机试真题2023 JAVAJS】最少数量线段覆盖
华为OD机试真题,2023年度机试题库全覆盖,刷题指南点这里 最少数量线段覆盖 知识点排序贪心 时间限制:1s 空间限制:256MB 限定语言:不限 题目描述: 给定坐标轴上的一组线段,线段的起点和终 ...
- ACM公选课第五节贪心4.14-5.4补+第六节上贪心线段覆盖
每一步都不从全局,找当下就好 特征(还有dp基础) 求解(比如最小生成树那个) 伪代码 就是每个房间的比例都不一样 要靠经验 事件序列问题(dp贪心经典题) 用贪心解,最先结束的,后面选最先结束且不重 ...
- P1803 凌乱的yyy / 线段覆盖
P1803 凌乱的yyy / 线段覆盖 https://www.luogu.org/problemnew/show/P1803 提交 题目提供者 yyy2015c01 嘤嘤嘤 评测方式 云端评测 标签 ...
- sdut 2074 区间覆盖问题(贪心)
区间覆盖问题 Time Limit: 1000MS Memory limit: 65536K 题目描述 用i来表示x坐标轴上坐标为[i-1,i]的长度为1的区间,并给出n(1≤M≤200)个不同的整数 ...
- 线段覆盖(洛谷P1803题题解,C++语言描述)
题目要求 P1803题目链接 分析 这题是一个线段覆盖问题,但并不是很复杂,也是贪心思想. 想要尽可能放线段,不能重合(可以正好相交),那就可以每一次只关注右端点,尽可能地选择剩余未选的线段中右端点最 ...
- 【codevs30123037】线段覆盖4、5,姗姗来迟
3012 线段覆盖 4 时间限制: 1 s 空间限制: 64000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 数轴上有n条线段,线段的两端都是整数坐标, ...
- 1214线段覆盖问题——贪心法
题目描述: 给定x轴上的N(0<N<100)条线段,每个线段由它的二个端点a_I和b_I确定,I=1,2,--N.这些坐标都是区间(-999,999)的整数.有些线段之间会相互交叠或覆盖. ...
- 信息学奥赛一本通 1323:【例6.5】活动选择 | 1422:【例题1】活动安排 | 洛谷 P1803 凌乱的yyy / 线段覆盖
[题目链接] ybt 1323:[例6.5]活动选择 ybt 1422:[例题1]活动安排 洛谷 P1803 凌乱的yyy / 线段覆盖 注意:ybt 1323数据个数最大为 1 0 3 10^3 1 ...
- luogu P1803线段覆盖
luogu P1803 线段覆盖 (典型的贪心:在所有区间中能够选择多的区间的个数) 思路:比较简单易想:每次选择新区间时,仅需在所有符合条件的区间选择右端点最小的区间,因为这样可以保证下一次选择时可 ...
最新文章
- AOC的显示器真的很烂
- 开3389后不能登录的六种原因
- 基本数据类型与表达式5 - 零基础入门学习Delphi06
- java如何读取rfid的数据_100G 数据如何先随机读取1%?
- 自我引用(Self reference)
- 查看docker容器日志
- 使用 Chrome 调试 Vue3 的 TypeScript 源码
- Android游戏SQL注入,关于Android contentprovider sql注入问题
- 重置浏览器的css,css重置浏览器默认样式
- JUCE-VST-001 JUCE的下载与安装
- jdbc常见异常及错误解决办法汇总
- 计算机知识演讲稿,乔布斯的演讲稿 我们的IT梦想
- 一、开水白菜(steamed Chinese cabbage in supreme soup)
- 如何识别哭泣csdn_【jji技术】语音识别工程实战:聊聊语音芯片选型
- 黄哥python培训骗局
- 【Vmware】 CentOS 8 安装教程
- DataX数据同步工具使用
- 北京林业大c语言程序设计考试试题,2016年北京林业大学信息学院程序设计语言、数据结构(上机操作)复试笔试最后押题五套卷...
- 刘未鹏:为什么你应该(从现在开始就)写博客
- 8倍的观察镜系统设计
热门文章
- Jquery中css()方法获取边框长度
- 扩展gcd codevs 1200 同余方程
- java selenium (十) 操作浏览器
- (2) 假设字符串类似这样的aba和aab就相等,现在随便给你二组字符串,请编程比较他们看是否相等...
- Spring.Net 能为我们做点什么
- php 单词替换,如何在PHP中替换字符串中的单词?
- KEIL MDK 仿真时程序”乱跑“问题
- stm32 常见错误及原因【持续更新】
- 如何将ISE的库和vivado的库都加入modelsim.ini
- Flocking for Multi-Agent Dynamic Systems:Algorithms and Theory