贪心 URAL 1303 Minimal Coverage
- /*
- 题意:最少需要多少条线段能覆盖[0, m]的长度
- 贪心:首先忽略被其他线段完全覆盖的线段,因为选取更长的更优
- 接着就是从p=0开始,以p点为标志,选取 (node[i].l <= p && p < node[i+1].l)
- 详细解释:http://www.cnblogs.com/freezhan/p/3219046.html
- */
- #include <cstdio>
- #include <iostream>
- #include <algorithm>
- #include <cstring>
- #include <cmath>
- using namespace std;
- const int MAXN = 1e6 + ;
- const int INF = 0x3f3f3f3f;
- struct Node
- {
- int l, r;
- }node[MAXN], ans[MAXN];
- bool cmp(Node x, Node y)
- {
- if (x.l == y.l) return x.r > y.r;
- else return x.l < y.l;
- }
- int main(void) //URAL 1303 Minimal Coverage
- {
- //freopen ("R.in", "r", stdin);
- int m;
- while (scanf ("%d", &m) == )
- {
- int n = ; int u, v;
- while (scanf ("%d%d", &u, &v) == && (u || v))
- node[++n].l = u, node[n].r = v;
- sort (node+, node++n, cmp);
- int k = ;
- for (int i=; i<=n; ++i) //cover
- {
- if (node[k].l < node[i].l && node[k].r < node[i].r)
- {
- node[++k] = node[i];
- }
- }
- n = k; int p = ; int cnt = ;
- node[n+].l = node[n+].r = m + ;
- for (int i=; i<=n; ++i)
- {
- if (node[i].l <= p && p < node[i+].l)
- {
- ans[++cnt] = node[i]; p = node[i].r;
- }
- if (p >= m)
- {
- printf ("%d\n", cnt);
- for (int i=; i<=cnt; ++i)
- {
- printf ("%d %d\n", ans[i].l, ans[i].r);
- }
- break;
- }
- }
- if (p < m) puts ("No solution");
- }
- return ;
- }
- /*
- No solution
- */
贪心 URAL 1303 Minimal Coverage的更多相关文章
- ural 1303 Minimal Coverage【贪心】
链接: http://acm.timus.ru/problem.aspx?space=1&num=1303 http://acm.hust.edu.cn/vjudge/contest/view ...
- Ural 1303 Minimal Coverage(贪心)
题目地址:Ural 1303 先按每一个线段的左端点排序,然后设置一个起点s.每次都从起点小于等于s的线段中找到一个右端点最大的. 并将该右端点作为新的起点s,然后继续找. 从左到右扫描一遍就可以. ...
- URAL 1303 Minimal Coverage
URAL 1303 思路: dp+贪心,然后记录路径 mx[i]表示从i开始最大可以到的位置 sufmx[i]表从1-i的某个位置开始最大可以到达的位置 比普通的贪心效率要高很多 代码: #inclu ...
- ural 1303 Minimal Coverage(贪心)
链接: http://acm.timus.ru/problem.aspx?space=1&num=1303 按照贪心的思想,每次找到覆盖要求区间左端点时,右端点最大的线段,然后把要求覆盖的区间 ...
- URAL 1303. Minimal Coverage(DP)
题目链接 又是输出路径...这题完全受上题影响,感觉两个题差不多..用了基本上一样的算法写了,这题比较纠结,就是卡内存啊...5000*5000的数组开不了..然后没办法,水了好几次MLE,看了一下虎 ...
- UVA 10020 Minimal coverage(贪心 + 区间覆盖问题)
Minimal coverage The Problem Given several segments of line (int the X axis) with coordinates [Li, ...
- uva 10020 Minimal coverage 【贪心】+【区间全然覆盖】
Minimal coverage The Problem Given several segments of line (int the X axis) with coordinates [Li,Ri ...
- UVA-10020 Minimal coverage(贪心)
题目大意:在x轴上,给一些区间,求出能把[0,m]完全覆盖的最少区间个数及该情形下的各个区间. 题目分析:简单的区间覆盖问题.可以按这样一种策略进行下去:在所有区间起点.长度有序的前提下,对于当前起点 ...
- 【区间覆盖问题】uva 10020 - Minimal coverage
可以说是区间覆盖问题的例题... Note: 区间包含+排序扫描: 要求覆盖区间[s, t]; 1.把各区间按照Left从小到大排序,如果区间1的起点大于s,则无解(因为其他区间的左起点更大):否则选 ...
随机推荐
- PV公式
IP(独立IP): 即Internet Protocol,指独立IP数.00:00-24:00内相同IP地址之被计算一次.PV(访问量): 即Page View, 即页面浏览量或点击量,用户每次刷 ...
- 如何实现在已有代码之后添加逻辑之java动态代理
在上篇博客中讨论到java的静态代理, 就是通过组合的方法,前提是委托类需要实现一个接口,代理类也实现这个这个 接口,从何组合两个类,让代理类给委托类添加功能! 知道java的静态代理,我们又遇到一个 ...
- [Effective JavaScript 笔记]第38条:在子类的构造函数中调用父类的构造函数
示例 场景类 场景图(scene)是在可视化的过程中(如游戏或图形仿真场景)描述一个场景的对象集合.一个简单的场景包含了在该场景中的所有对象(称角色),以及所有角色的预加载图像数据集,还包含一个底层图 ...
- map遍历
Set<Map.Entry<String,String>> ss = params.entrySet(); for(Map.Entry<String,String> ...
- BZOJ 1058
服气!我果然就是个傻逼. 傻兮兮地感觉两个数之间的差距无需删除一些答案,妈个鸡就只加入了一些新的答案忘记了去掉无效的答案.我果然是傻逼,经验不足脑子笨... 这么水的题...不说了,说多了都是泪. 自 ...
- CH round #55 Streaming #6
T^T Saffah大神照样刷我这样诚心诚意想做一套NOIP模拟题的蒟蒻. 第一题 九九归一 好diao的名字... 题意就是给定一队$n,q$,求在模$n$意义下一个数$x$自乘的循环节长度. 当$ ...
- LVS-三种负载均衡方式比较
1.什么是LVS? 首 先简单介绍一下LVS (Linux Virtual Server)到底是什么东西,其实它是一种集群(Cluster)技术,采用IP负载均衡技术和 基于内容请求分发技术.调度器具 ...
- Linux: xclip,pbcopy,xsel用法 terminal 复制粘帖 (mac , ubuntu)
ubuntu下的用户可以只用apt-get来安装: sudo apt-get install xclip echo "Hello, world" | xclip mac下使用pbc ...
- MyBatis3: There is no getter for property named 'code' in 'class java.lang.String'
mybatis3 : mysql文如下,传入参数为string类型时‘preCode’,运行报错为:There is no getter for property named 'preCode' i ...
- 转载一篇关于ios copy的文章
由于原文创作时间较早,一些内容不实用了,我对其进行了加工,去掉了一部分内容,添加了一点注释. 原文连接 http://www.cnblogs.com/ydhliphonedev/archive/201 ...