CodeForces
来源:互联网 发布:中国人民航空大学知乎 编辑:程序博客网 时间:2024/05/23 01:57
题意:n条区间,求区间重叠次数超过k的区间最少有多少个
左端点赋1,右端点赋-1,全部整合在一起排个序,扫一遍,把所有重叠次数超过k的区间找出来,最后在扫一遍把可以连接在一起的区间连接起来。
会出现左右端点相同的区间。
#include<bits/stdc++.h>#define inf 0x3f3f3f3fusing namespace std;struct node{int index,flog;}num[2000005];int cmp(node u,node v){if(u.index==v.index)return u.flog>v.flog;return u.index<v.index;}vector<node>ans,ans2;int main(){int n,a,b,i,k;cin>>n>>k;for(i=0;i<n;i++){scanf("%d %d",&a,&b);node t;t.index=a;t.flog=1;num[2*i]=t;t.index=b;t.flog=-1;num[2*i|1]=t;}sort(num,num+2*n,cmp);int now=0,index=inf;for(i=0;i<2*n;i++){now+=num[i].flog;if(now==k){if(index==inf){index=num[i].index;}}if(index!=inf&&now==k-1){node t;t.index=index;t.flog=num[i].index;ans.push_back(t);index=inf;}}if(ans.size()==0) { cout<<0<<endl; return 0; } node now_=ans[0];for(i=1;i<ans.size();i++) { if(ans[i].index==now_.flog) { now_.flog=ans[i].flog; } else { ans2.push_back(now_); now_=ans[i]; } } ans2.push_back(now_);cout<<ans2.size()<<endl;for(i=0;i<ans2.size();i++){printf("%d %d\n",ans2[i].index,ans2[i].flog);}return 0;}
阅读全文
0 0
- codeforces~~~
- Codeforces
- codeforces
- Codeforces
- codeforces
- codeforces
- Codeforces
- Codeforces
- CodeForces
- CodeForces
- CodeForces
- CodeForces
- CodeForces
- Codeforces
- Codeforces
- Codeforces
- Codeforces
- Codeforces
- spring 前端使用ajax提交两个以上相同对象list到后台的处理
- WebView 在android中的使用详解
- 阿里云服务器 mysql远程连接时,出现连接不上的解决办法
- Android开发之获取网络类型(WIFI、2G、3G、4G)和运营商名称
- ubuntu 安装 mysql navicat
- CodeForces
- 排序之希尔排序
- oracle杀掉外部连接进程
- Java的PermGen概念认识,以及PermGen space的错误解决方法
- 使用FrameLayout来适配ImageViw按比例展示
- 使用github保存项目的流程
- 常见错误清单(长期更新)
- JavaScript设计模式之中介模式
- 软件设计目标—基于简单工厂模式的计算器程序