//code by virtualtan 2018 寒7

区间不相交

#include <cstdio>
#include <algorithm>

#define MAXN 1111

using namespace std;

struct node {
	int l, r;
}a[MAXN];

int cmp(node x, node xx) {
	if(x.r != xx.r) return x.r < xx.r; //从小到大排序就用 ‘<’
	return x.l > xx.l;//优先选择右端点小的   若右端点相等  优先左端点大的
}

int n, ans;

int main() {
	scanf("%d", &n);
	for(int i = 1; i <= n; i++) scanf("%d%d", &a[i].l, &a[i].r);
	sort(a + 1, a + 1 + n, cmp);
//	for(int i = 1; i <= n; i++) printf("> %d  %d\n", a[i].l, a[i].r);
	int R = -2033333333;
//			 2147483647
	for(int i = 1; i <= n; i++) {
		if(R <= a[i].l) {
			ans++;
			R = a[i].r;//更新 限制区间左端点 的数
		}
	}
	printf("%d", ans);
	return 0;
}

区间覆盖

#include <cstdio>
#include <algorithm>

#define MAXN 1111

using namespace std;

struct node {
	int l, r;
}a[MAXN];

int cmp(node x, node xx) {
	return x.l < xx.l;
}

int n, ans;

int main() {
	scanf("%d", &n);
	for(int i = 1; i <= n; i++) scanf("%d%d", &a[i].l, &a[i].r);
	sort(a + 1, a + 1 + n, cmp);
	int R = 1;
	int rr = 0;
	for(int i = 1; i <= n; i++) {0
		if(a[i].l <= R) rr = max(rr, a[i].r);
		if(R > n) break;
		if(a[i + 1].l > R || i == n) {
			R = rr + 1;//rr 是 已成立的 区间中 最大区间 的右端点
					   //R是:需要:覆盖区间的左端点 又因为rr 已被覆盖  所以不能写 R == rr
			ans++;
		}
		printf("%d %d %d\n", i, ans, R);
	}
	printf("%d", ans);
	return 0;
}

区间不相交&区间覆盖的更多相关文章

  1. UVaLive 6609 Meeting Room Arrangement (贪心,区间不相交)

    题意:给定 n 个区间,让你选出最多的区间,使得每个区间不相交. 析:贪心题,贪心策略是按右端点排序,然后按着选即可. 代码如下: #pragma comment(linker, "/STA ...

  2. HDU 2037 - 今年暑假不AC - [经典 选择不相交区间 问题]

    是一道很经典的选择不相交区间的问题. 关于选择不相交区间,可以参考刘汝佳.也可以参考:http://blog.csdn.net/dgq8211/article/details/7534488 以及模板 ...

  3. Java实现 LeetCode 352 将数据流变为多个不相交区间

    352. 将数据流变为多个不相交区间 给定一个非负整数的数据流输入 a1,a2,-,an,-,将到目前为止看到的数字总结为不相交的区间列表. 例如,假设数据流中的整数为 1,3,7,2,6,-,每次的 ...

  4. LeetCode352 将数据流变为多个不相交区间

    LeetCode352 将数据流变为多个不相交区间 1 题目 给你一个由非负整数 a1, a2, ..., an 组成的数据流输入,请你将到目前为止看到的数字总结为不相交的区间列表. 实现 Summa ...

  5. 整数区间及区间集合(C#实现)

    /// <summary> /// 整数区间类 /// </summary> private class Interval { , _end = ; public int St ...

  6. [用CDQ分治解决区间加&区间求和]【习作】

    [前言] 作为一个什么数据结构都不会只会CDQ分治和分块的蒟蒻,面对区间加&区间求和这么难的问题,怎么可能会写线段树呢 于是,用CDQ分治解决区间加&区间求和这篇习作应运而生 [Par ...

  7. 线段树 区间开方区间求和 & 区间赋值、加、查询

    本文同步发表于 https://www.zybuluo.com/Gary-Ying/note/1288518 线段树的小应用 -- 维护区间开方区间求和 题目传送门 约定: sum(i,j) 表示区间 ...

  8. 树状数组区间加法&区间求和操作

    树状数组区间加法&区间求和操作 一般的树状数组解决区间加&单点询问并不复杂 但是要解决区间求和... 我们假设原数组是\(\{a_i\}\),差分数组\(\{d_i=a_i-a_{i- ...

  9. pandas处理时间序列(2):DatetimeIndex、索引和选择、含有重复索引的时间序列、日期范围与频率和移位、时间区间和区间算术

    一.时间序列基础 1. 时间戳索引DatetimeIndex 生成20个DatetimeIndex from datetime import datetime dates = pd.date_rang ...

随机推荐

  1. 修改mysql连接的密码

    mysql8.0修改密码: ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的password'; msyql开启实现 ...

  2. Git 学习笔记(二)

    看完了 Git 的介绍后,也是时候动手尝试一下了,不过我们需要先安装好它.它有许多种安装方式,主要分两种,一种是通过编译源代码来安装:另一种是使用为特定平台预编译好的安装包,这里就不做赘述了. 配置 ...

  3. Spring《二》 Bean的生命周期

    Bean初始化 1.bean中实现public void init():方法,config.xml中增加init-method="init" 属性. 2.bean实现接口Initi ...

  4. 高并发之后端优化(PHP)

    页面静态化 使用模板引擎 可以使用Smarty的缓存机制生成静态HTML缓存文件 $smarty->cachedir=$ROOT·"/cache"://缓存目录 $smart ...

  5. Apache-TomCat安装配置

    Apache-TomCat安装配置 本文是免安装版的Tomcat!(安装JavaJDK的步骤就不多述了!) (1)官网下载地址:https://tomcat.apache.org/download-8 ...

  6. child和childNodes的区别

    child和childNodes区别: childNodes是标准属性, child是非标准属性 childNodes: 获取节点,不同浏览器表现不同 IE 只获取元素节点 非IE 获取元素节点和文本 ...

  7. Five Invaluable Techniques to Improve Regex Performance

    Regular expressions are powerful, but with great power comes great responsibility. Because of the wa ...

  8. onTouchEvent事件

    @Override public boolean onTouchEvent(MotionEvent event) { if(event.getAction() == MotionEvent.ACTIO ...

  9. 硅谷最有名的帮派:如果你不知道PayPal黑帮

    paypal 你知道Tesla Motors,LinkedIn,SpaceX,Yelp,Yammer这几家公司的共同点吗?除了他们的市值都超过10亿美金之外,他们的创办人都是Paypal黑帮(Payp ...

  10. EFCore笔记之查询数据

    查询数据 基础查询,Linq100实例: https://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b using (var context = ...