k个区间相交的段落数 Educational Codeforces Round 4 D
http://codeforces.com/contest/612/problem/D
题目大意:给你n个区间,这n个区间会有相交的部分,如果一个区间相交的部分>=k,那么就把这个区间记录下来。且要求所记录的区间个数尽量少(换句话说就是区间尽量大),问有几个这样的区间,并且输出这样的区间。
思路一:
我之前的想法就是把所有的sort出来,然后用树状数组来求区间相交个数。但是这样子写出来以后可能会出现这样的区间,即[1,3][3,5],所以我们又要把这两个区间合并一下,所以合并的时候有需要使用线段树来合并区间。理论上来说,这样子是可行的,就是太麻烦了。
于是接下来是官方题解。
思路二:
我们把所有的元素预处理出来以后sort,然后我们发现题干所需要求的是>=k即可,那么我们可以发现,区间如果要是最长的话,那么必然是cnt=k的时候,所以我们只需要在sort以后,O(n)去获得这个cnt即可。在[left, right]为left的时候cnt++,right的时候cnt--,然后统计一下cnt==k的时候就能够得到最大的区间了。
//看看会不会爆int!数组会不会少了一维!
//取物问题一定要小心先手胜利的条件
#include <bits/stdc++.h>
using namespace std;
#pragma comment(linker,"/STACK:102400000,102400000")
#define LL long long
#define ALL(a) a.begin(), a.end()
#define pb push_back
#define mk make_pair
#define fi first
#define se second
#define haha printf("haha\n")
const int maxn = 1e6 + ;
int n, k;
pair<int, int> p[maxn];
vector<pair<int, int> > ve;
int a[maxn]; int main(){
cin >> n >> k;
for (int i = ; i <= n; i++){
int l, r; scanf("%d%d", &l, &r);
ve.push_back(mk(l, ));
ve.push_back(mk(r, ));
p[i] = mk(l, r);
}
sort(ALL(ve));
vector<pair<int, int> > ans;
int cnt = , tmp;
for (int i = ; i < ve.size(); i++){
int ty = ve[i].se;
int val = ve[i].fi;
if (ty == ){
cnt++;
if (cnt == k){
tmp = val;
}
}
if (ty == ){
if (cnt == k){
ans.pb(mk(tmp, val));
}
cnt--;
}
}
printf("%d\n", ans.size());
for (int i = ; i < ans.size(); i++){
printf("%d %d\n", ans[i].fi, ans[i].se);
}
return ;
}
k个区间相交的段落数 Educational Codeforces Round 4 D的更多相关文章
- Educational Codeforces Round 58 (Rated for Div. 2)  题解
		
Educational Codeforces Round 58 (Rated for Div. 2) 题目总链接:https://codeforces.com/contest/1101 A. Min ...
 - Educational Codeforces Round 64(ECR64)
		
Educational Codeforces Round 64 CodeForces 1156A 题意:1代表圆,2代表正三角形,3代表正方形.给一个只含1,2,3的数列a,ai+1内接在ai内,求总 ...
 - Educational Codeforces Round 37
		
Educational Codeforces Round 37 这场有点炸,题目比较水,但只做了3题QAQ.还是实力不够啊! 写下题解算了--(写的比较粗糙,细节或者bug可以私聊2333) A. W ...
 - Educational Codeforces Round 35 (Rated for Div. 2)
		
Educational Codeforces Round 35 (Rated for Div. 2) https://codeforces.com/contest/911 A 模拟 #include& ...
 - Educational Codeforces Round 63 (Rated for Div. 2) 题解
		
Educational Codeforces Round 63 (Rated for Div. 2)题解 题目链接 A. Reverse a Substring 给出一个字符串,现在可以对这个字符串进 ...
 - Educational Codeforces Round 40  F. Runner's Problem
		
Educational Codeforces Round 40 F. Runner's Problem 题意: 给一个$ 3 * m \(的矩阵,问从\)(2,1)$ 出发 走到 \((2,m)\) ...
 - Educational Codeforces Round 65 (Rated for Div. 2)题解
		
Educational Codeforces Round 65 (Rated for Div. 2)题解 题目链接 A. Telephone Number 水题,代码如下: Code #include ...
 - Educational Codeforces Round 69  D  E
		
Educational Codeforces Round 69 题解 题目编号 A B C D E F 完成情况 √ √ √ ★ ★ - D. Yet Another Subarray Problem ...
 - Educational Codeforces Round 63部分题解
		
Educational Codeforces Round 63 A 题目大意就不写了. 挺简单的,若果字符本来就单调不降,那么就不需要修改 否则找到第一次下降的位置和前面的换就好了. #include ...
 
随机推荐
- 第一百二十二节,JavaScript表单处理
			
JavaScript表单处理 学习要点: 1.表单介绍 2.文本框脚本 3.选择框脚本 为了分担服务器处理表单的压力,JavaScript提供了一些解决方案,从而大大打破了处处依赖服务器的局面. 一. ...
 - JDK各版本新增的主要特性
			
JDK1.5新特性: 1.自动装箱与拆箱: 2.枚举 3.静态导入,如:import staticjava.lang.System.out 4.可变参数(Varargs) 5.内省(Introspec ...
 - 启动Mysql报错:Another MySQL daemon already running with the same unix socket.
			
启动Mysql报错: Another MySQL daemon already running with the same unix socket. 删除如下文件即可解决 /var/lib/mysql ...
 - swift label不同颜色、不同字体
			
let string = "点击注册按钮,即表示您已同意隐私条款和服务协议" let ranStr = "同意" let attrstring:NSMutabl ...
 - 转:jquery的live和on
			
参考1,参考2 给元素绑定事件,本人用的jquery版本大多为1.7和1.8的,所以一直习惯于用live(),但是最近朋友突然问我,怎么给新生成的dom元素绑定事件,我随口回答live(),结果他给我 ...
 - javascript静态页面传值的三种方法分享
			
一:JavaScript静态页面值传递之URL篇能过URL进行传值.把要传递的信息接在URL上.Post.htm 复制代码 代码如下: <input type="text" ...
 - Gradle学习草稿
			
参考博客:http://www.cnblogs.com/davenkin/p/gradle-learning-1.html Android Plugin DSL Reference http://go ...
 - 【转载】javadoc学习笔记和可能的注意细节
			
转载自:http://www.cnblogs.com/xt0810/p/3630996.html [前面的话] 这次开发项目使用jenkins做持续集成,PMD检查代码,Junit做单元测试,还会自动 ...
 - hdu1024
			
#include <cstdio>#include <iostream>const int MAX = 1000005; using namespace std; int nu ...
 - PostgreSQL 类型转换  -除法
			
PostgreSQL 类型转换 类似Oracle ,PostgreSQL也有强大的类型转换函数, 下面仅举两个类型转换例子. --1 例子 postgres=# select 1/4; ?colum ...