Educational Codeforces Round 4 D. The Union of k-Segments 排序
2015-12-28 10:45
323 查看
D. The Union of k-Segments
题目连接:
http://www.codeforces.com/contest/612/problem/DDescription
You are given n segments on the coordinate axis Ox and the number k. The point is satisfied if it belongs to at least k segments. Find the smallest (by the number of segments) set of segments on the coordinate axis Ox which contains all satisfied points and no others.Input
The first line contains two integers n and k (1 ≤ k ≤ n ≤ 106) — the number of segments and the value of k.The next n lines contain two integers li, ri ( - 109 ≤ li ≤ ri ≤ 109) each — the endpoints of the i-th segment. The segments can degenerate and intersect each other. The segments are given in arbitrary order.
Output
First line contains integer m — the smallest number of segments.Next m lines contain two integers aj, bj (aj ≤ bj) — the ends of j-th segment in the answer. The segments should be listed in the order from left to right.
Sample Input
3 20 5
-3 2
3 8
Sample Output
20 2
3 5
Hint
题意
给你一堆区间,然后让你把覆盖k次及k次以上的区间都输出出来题解:
直接暴力扫分界点就好了分界点是正向覆盖k次的就加进左端点,是反向,就加进右端点,然后输出就好了
代码
#include<bits/stdc++.h> using namespace std; #define maxn 3000006 pair<int,int> Line[maxn]; int tot = 1; int t[maxn]; int main() { int n,k;scanf("%d%d",&n,&k); for(int i=0;i<n;i++) { int x,y;scanf("%d%d",&x,&y); Line[tot++]=make_pair(x,-1); Line[tot++]=make_pair(y,1); } sort(Line+1,Line+tot); int flag1 = 0,flag2 = 0; vector<int> ans1; vector<int> ans2; for(int i=1;i<tot;i++) { t[i] = t[i-1] - Line[i].second; if(t[i]==k&&t[i-1]==k-1) ans1.push_back(Line[i].first); } memset(t,0,sizeof(t)); for(int i=1;i<tot;i++) { t[i] = t[i-1] - Line[i].second; if(t[i]==k-1&&t[i-1]==k) ans2.push_back(Line[i].first); } if(ans1.size()!=ans2.size()) ans2.push_back(Line[tot-1].first); cout<<ans1.size()<<endl; for(int i=0;i<ans1.size();i++) cout<<ans1[i]<<" "<<ans2[i]<<endl; }
相关文章推荐
- 分页
- 两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
- java读取图像的rpg以及灰度值,可以对rgb进行修改后输出新图像
- AngularJS进行性能调优的7个建议
- 用户界面框架jQuery EasyUI示例大全之Accordion
- Maven创建Web项目的具体步骤
- 移动端页面调试神器-browser-sync 实时刷新
- 51nod 1670:打怪兽 递推
- duplicate 'unsigned'
- GATK软件介绍
- MyBatis之拦截器interceptor学习
- html中表示引用文本的标签:<q>,<blockquote>
- 环境搭建
- python网站检索
- iOS -- 获取当前时间,以及出现的错误
- 利用TextSwitcher实现首页的公告展示功能
- tmux terminal multiplexer
- android 文件上传表单 详解
- linux下安装oracle
- 助教博客列表-广商13级软件工程