Codeforces 612D The Union of k-Segments
2016-01-15 19:38
267 查看
传送门:
http://codeforces.com/contest/612/problem/D
题意:找线段的集合,使得其中包含满足下个性质的点:
点属于至少k条线段
题解:排序,左端点标-1,右端点标1,然后O(2*n)扫描一遍点,开个计数器记录当前点属于多少条线段,然后记录下来所有满足条件的线段左右端点即可
code:
http://codeforces.com/contest/612/problem/D
题意:找线段的集合,使得其中包含满足下个性质的点:
点属于至少k条线段
题解:排序,左端点标-1,右端点标1,然后O(2*n)扫描一遍点,开个计数器记录当前点属于多少条线段,然后记录下来所有满足条件的线段左右端点即可
code:
[code]#include<bits/stdc++.h> using namespace std; const int maxn=1e5+10; int n,k; vector<pair<int,int> >v; vector<pair<int,int> >ans; int l,r; int main() { v.clear(); scanf("%d%d",&n,&k); for(int i=0;i<n;i++) { scanf("%d%d",&l,&r); v.push_back(make_pair(l,-1)); v.push_back(make_pair(r,1)); } sort(v.begin(),v.end()); int c=0; for(int i=0;i<2*n;i++) { c-=v[i].second; if(v[i].second==-1&&c==k) l=v[i].first; if(v[i].second==1&&c==k-1) ans.push_back(make_pair(l,v[i].first)); } printf("%d\n",ans.size()); for(int i=0;i<ans.size();i++) { printf("%d %d\n",ans[i].first,ans[i].second); } return 0; }
相关文章推荐
- Android应用开发之自定义View触摸相关工具类全解
- 一道关于 precision、recall 和 threshold关系的机器学习题
- CSS基本特性
- 深度学习系列(九):详解工具箱参数及网络一种改进方式-dropout
- SHell启动服务停止重启脚本模板
- struts2.0 的action标签使用
- vim 复制粘贴和剪切
- kvo的底层实现
- 使用eclipse开发工具与hibernate开发者为开源一起做贡献
- JNDI基础知识
- 使用eclipse开发工具与hibernate开发者为开源一起做贡献
- 使用eclipse开发工具与hibernate开发者为开源一起做贡献
- UI相关
- 如何用上谷歌搜索
- android Toast大全(五种情形)建立属于你自己的Toast
- javascript 中caller,callee,call,apply 的概念[转载]
- 黑马程序员----十七-Set集合
- AFNetWorking 请求数据报”Request failed: unacceptable content-type: text/plain” 错误解决方法
- [每日电路图] 5、心率检测电路设计详解——送给想了解心率计的小白(博主推荐)
- TabControl控件用法图解