ZOJ3953 Intervals
题意
有n个区间,要求删除一些区间使得不存在三个相交的区间。找出删除的最少区间。
分析
是个比较显然的贪心吧。
先按照区间的左起点进行排序,然后从左往右扫,当有三个区间相交的时候,删除那个右端点最远的那个区间。
这个想法显然是没错的,但是问题是n最大是50000,我们该怎么在时间复杂度以内边扫边找相交区间呢?
我们可以在从左到右扫的时候维护一个vector,里面是到目前为止,右端点最远的三个区间。我们判断相交是要从这里面判断就可以。当这里面的三个区间相交的时候,根据上面的规则删除,当不想交的时候,把新区间加进来,去掉右端点最近的一个(但是并不是删除,只是从这个vector中删除而已)。
1 #include <cstdio> 2 #include <algorithm> 3 #include <cstring> 4 #include <algorithm> 5 #include <set> 6 #include <map> 7 #include <vector> 8 #include <queue> 9 #include <stack> 10 #include <iostream> 11 #include <cmath> 12 13 using namespace std; 14 typedef long long LL; 15 typedef unsigned long long ull; 16 const int INF=2147483600; 17 const int maxn=50000+100; 18 19 struct Node{ 20 int l,r,id; 21 bool vis; 22 bool operator <(const Node &rhs)const{ 23 return l<rhs.l; 24 } 25 }node[maxn]; 26 int T,n; 27 int main(){ 28 scanf("%d",&T); 29 for(int t=1;t<=T;t++){ 30 scanf("%d",&n); 31 for(int i=1;i<=n;i++){ 32 scanf("%d%d",&node[i].l,&node[i].r); 33 node[i].id=i; 34 node[i].vis=0; 35 } 36 sort(node+1,node+1+n); 37 vector<Node>V; 38 int num; 39 vector<int>ans; 40 41 for(int i=1;i<=n;i++){ 42 //cout<<node[i].l<<" "<<node[i].r<<endl; 43 V.push_back(node[i]); 44 if(V.size()<3)continue; 45 sort(V.begin(),V.end()); 46 47 if(V[0].r>=V[1].l&&V[2].l<=V[1].r&&V[2].l<=V[0].r){ 48 int M=-1; 49 M=max(M,max(max(V[0].r,V[1].r),V[2].r)); 50 vector<Node>::iterator it; 51 for( it=V.begin();it!=V.end();it++){ 52 if(it->r==M){ 53 ans.push_back(it->id); 54 V.erase(it); 55 break; 56 } 57 } 58 } 59 if(V.size()>=3){ 60 int M=INF; 61 for(int i=0;i<3;i++){ 62 M=min(M,V[i].r); 63 } 64 vector<Node>::iterator it; 65 for(it=V.begin();it!=V.end();it++){ 66 if(it->r==M){ 67 V.erase(it); 68 break; 69 } 70 } 71 } 72 } 73 printf("%d\n",ans.size()); 74 sort(ans.begin(),ans.end()); 75 for(int i=0;i<ans.size();i++){ 76 if(i!=0)printf(" "); 77 printf("%d",ans[i]); 78 } 79 if(ans.size()!=0) 80 printf("\n"); 81 } 82 return 0; 83 }
View Code
转载于:https://www.cnblogs.com/LQLlulu/p/8932552.html
ZOJ3953 Intervals相关推荐
- ZOJ-3953 Intervals,t
Intervals 题意:给出n个区间,求最少删除多少个区间使得任意三个区间都不相交. 思路:按区间左端点排序,每次选取r最大的两个与当前比较,如果能放更新r,否则删除r最大的.关键就在怎么删除r最大 ...
- R语言ggplot2可视化:置信区间与分组具有相同色彩、自定义置信区间带的色彩、Make confidence intervals the same color as line by group
R语言ggplot2可视化:置信区间与分组具有相同色彩.自定义置信区间带的色彩.Make confidence intervals the same color as line by group 目录
- 置信区间(Confidence Intervals)是什么?如何计算置信区间?置信区间的两种计算方法是什么?二值样本置信区间如何计算?如何基于bootstrap抽样进行置信区间计算?
置信区间(Confidence Intervals)是什么?如何计算置信区间?置信区间的两种计算方法是什么?二值样本置信区间如何计算?如何基于bootstrap抽样进行置信区间计算? 目录 置信区间( ...
- LeetCode 56. Merge Intervals
原题链接在这里:https://leetcode.com/problems/merge-intervals/ 题目: Given a collection of intervals, merge al ...
- Merge Intervals
代码: 1 #include<iostream> 2 #include<vector> 3 #include<algorithm> 4 5 using namesp ...
- LeetCode Merge Intervals
Given a collection of intervals, merge all overlapping intervals. For example, Given [1,3],[2,6],[8, ...
- LeetCode:Merge Intervals
题目链接 Given a collection of intervals, merge all overlapping intervals. For example, Given [1,3],[2,6 ...
- POJ 1201 amp; HDU1384 amp; ZOJ 1508 Intervals(差分约束+spfa 求最长路径)
题目链接: POJ:http://poj.org/problem?id=1201 HDU:http://acm.hdu.edu.cn/showproblem.php? pid=1384 ZOJ:htt ...
- LeetCode-56-Merge Intervals
算法描述: Given a collection of intervals, merge all overlapping intervals. Example 1: Input: [[1,3],[2, ...
- [LeetCode]Merge Intervals
题目:Merge Intervals 给定n个区间合并重合区间 思路: 先按照区间起点排序,然后合并下面情况: 1.起点相同,以最大的终点为新的终点: 2.前一个终点大于后一个的起点. /****** ...
最新文章
- python tkinter 下拉框_python中tkinter入门之Menu创建顶级菜单、下拉菜单和弹出菜单。...
- Win2008 R2实战之只读域控制器部署(图)
- maven热部署插件-jetty
- prim算法_贪心算法详解(附例题)
- Workspace in use or cannot be created, choose a different one.--错误解决办法
- 如何关闭小娜进程_Python多进程之进程间通信 - Pipe amp; Queue
- 优秀的弹窗插件 jquery.lightbox_me.js
- java 启动参数 配置_Java运行参数设置
- c语言贪吃蛇设计意义,C语言贪吃蛇设计理念.pdf
- visio2019安装教程
- 计算机电路与电子学试卷,电路与电子学(第5版)学习指导与习题解答
- 计算机控制技术论文英语版,计算机控制技术外文论文
- oracle 获取日期的毫秒_Oracle 毫秒时间戳
- 大数据分析的“数据来源”有哪些?
- 相邻图片之间有空白间隙的问题解决
- oracle rac 关闭asm,11G rac的ASM无法关闭
- 戴尔电脑如何下载c语言,EqualLogic PS6000:戴尔的突破、机遇和挑战
- 新智慧杂志新智慧杂志社新智慧编辑部2022年第9期目录
- c语言错误 243什么意思,c语言编译后[Error] stray apos;\243apos; in program
- 【参赛作品12】基于华为云鲲鹏弹性云服务器部署openGauss数据库-实验
热门文章
- 拓端tecdat|R语言文本主题模型之潜在语义分析(LDA:Latent Dirichlet Allocation)
- 顺序栈实现迷宫求解问题v0.1
- iview 自定义时间选择器组件_视图更新科技发布View UI组件库(即 iView 4.0),超过50项更新...
- Python破解验证码,只要15分钟就够了!
- python数字图像处理(12):基本图形的绘制
- 机器学习(六)——PCA降维处理
- flutter text 左对齐_【Flutter学习】基本组件之文本组件Text
- 如何操作反射中构造方法、属性和普通方法?
- DevOps使用教程 华为云(6)文档报告 项目进度 会议记录 迭代评审
- python调用shell命令 批量执行python程序