题目传送门

  1. /*
  2. 题意:最少需要多少条线段能覆盖[0, m]的长度
  3. 贪心:首先忽略被其他线段完全覆盖的线段,因为选取更长的更优
  4. 接着就是从p=0开始,以p点为标志,选取 (node[i].l <= p && p < node[i+1].l)
  5. 详细解释:http://www.cnblogs.com/freezhan/p/3219046.html
  6. */
  7. #include <cstdio>
  8. #include <iostream>
  9. #include <algorithm>
  10. #include <cstring>
  11. #include <cmath>
  12. using namespace std;
  13. const int MAXN = 1e6 + ;
  14. const int INF = 0x3f3f3f3f;
  15. struct Node
  16. {
  17. int l, r;
  18. }node[MAXN], ans[MAXN];
  19. bool cmp(Node x, Node y)
  20. {
  21. if (x.l == y.l) return x.r > y.r;
  22. else return x.l < y.l;
  23. }
  24. int main(void) //URAL 1303 Minimal Coverage
  25. {
  26. //freopen ("R.in", "r", stdin);
  27. int m;
  28. while (scanf ("%d", &m) == )
  29. {
  30. int n = ; int u, v;
  31. while (scanf ("%d%d", &u, &v) == && (u || v))
  32. node[++n].l = u, node[n].r = v;
  33. sort (node+, node++n, cmp);
  34. int k = ;
  35. for (int i=; i<=n; ++i) //cover
  36. {
  37. if (node[k].l < node[i].l && node[k].r < node[i].r)
  38. {
  39. node[++k] = node[i];
  40. }
  41. }
  42. n = k; int p = ; int cnt = ;
  43. node[n+].l = node[n+].r = m + ;
  44. for (int i=; i<=n; ++i)
  45. {
  46. if (node[i].l <= p && p < node[i+].l)
  47. {
  48. ans[++cnt] = node[i]; p = node[i].r;
  49. }
  50. if (p >= m)
  51. {
  52. printf ("%d\n", cnt);
  53. for (int i=; i<=cnt; ++i)
  54. {
  55. printf ("%d %d\n", ans[i].l, ans[i].r);
  56. }
  57. break;
  58. }
  59. }
  60. if (p < m) puts ("No solution");
  61. }
  62. return ;
  63. }
  64. /*
  65. No solution
  66. */

贪心 URAL 1303 Minimal Coverage的更多相关文章

  1. ural 1303 Minimal Coverage【贪心】

    链接: http://acm.timus.ru/problem.aspx?space=1&num=1303 http://acm.hust.edu.cn/vjudge/contest/view ...

  2. Ural 1303 Minimal Coverage(贪心)

    题目地址:Ural 1303 先按每一个线段的左端点排序,然后设置一个起点s.每次都从起点小于等于s的线段中找到一个右端点最大的. 并将该右端点作为新的起点s,然后继续找. 从左到右扫描一遍就可以. ...

  3. URAL 1303 Minimal Coverage

    URAL 1303 思路: dp+贪心,然后记录路径 mx[i]表示从i开始最大可以到的位置 sufmx[i]表从1-i的某个位置开始最大可以到达的位置 比普通的贪心效率要高很多 代码: #inclu ...

  4. ural 1303 Minimal Coverage(贪心)

    链接: http://acm.timus.ru/problem.aspx?space=1&num=1303 按照贪心的思想,每次找到覆盖要求区间左端点时,右端点最大的线段,然后把要求覆盖的区间 ...

  5. URAL 1303. Minimal Coverage(DP)

    题目链接 又是输出路径...这题完全受上题影响,感觉两个题差不多..用了基本上一样的算法写了,这题比较纠结,就是卡内存啊...5000*5000的数组开不了..然后没办法,水了好几次MLE,看了一下虎 ...

  6. UVA 10020 Minimal coverage(贪心 + 区间覆盖问题)

     Minimal coverage  The Problem Given several segments of line (int the X axis) with coordinates [Li, ...

  7. uva 10020 Minimal coverage 【贪心】+【区间全然覆盖】

    Minimal coverage The Problem Given several segments of line (int the X axis) with coordinates [Li,Ri ...

  8. UVA-10020 Minimal coverage(贪心)

    题目大意:在x轴上,给一些区间,求出能把[0,m]完全覆盖的最少区间个数及该情形下的各个区间. 题目分析:简单的区间覆盖问题.可以按这样一种策略进行下去:在所有区间起点.长度有序的前提下,对于当前起点 ...

  9. 【区间覆盖问题】uva 10020 - Minimal coverage

    可以说是区间覆盖问题的例题... Note: 区间包含+排序扫描: 要求覆盖区间[s, t]; 1.把各区间按照Left从小到大排序,如果区间1的起点大于s,则无解(因为其他区间的左起点更大):否则选 ...

随机推荐

  1. 微信公开课发布微信官方教程:教你用好微信JS-SDK接口

    微信公众平台开放JS-SDK(微信内网页开发工具包),说明文档已经有相关使用方法和示例了,很多同学觉得不是很直观,为此微信公开课发布微信官方教程:教你用好微信JS-SDK接口. 1.分享类接口:支持获 ...

  2. [codeforces 293]B. Distinct Paths

    [codeforces 293]B. Distinct Paths 试题描述 You have a rectangular n × m-cell board. Some cells are alrea ...

  3. hiho一下 第九十四周 数论三·约瑟夫问题

    数论三·约瑟夫问题 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho的班级正在进行班长的选举,他们决定通过一种特殊的方式来选择班长. 首先N个候选人围成一个 ...

  4. FZU 1649 Prime number or not米勒拉宾大素数判定方法。

    C - Prime number or not Time Limit:2000MS     Memory Limit:32768KB     64bit IO Format:%I64d & % ...

  5. iPhone取消软件更新上边的1

    去除设置的更新+1小红点提示主要分为越狱和非越狱设备两种方法. 越狱状态下方法: 首先将你的设备进行越狱: 越狱后安装ifile(这个自行搜索安装): 用ifile打开/System/Library/ ...

  6. bootbox显示中文的按钮

    $("selector").on('click',function(){ bootbox.confirm({ title : "请确认", buttons: { ...

  7. jstl数字转日期

    <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> <jsp: ...

  8. Greedy:Cleaning Shifts(POJ 2376)

      牛的大扫除 题目大意:农夫有N只牛,这些牛要帮助打扫农舍,这些牛只能打扫固定位置(千万要注意这个位置不是连续的),每一段区间必须至少有一只牛打扫,问你至少需要多少只牛?(如果区间不能完全被覆盖,则 ...

  9. GLSL

    变量修饰符 修饰符给出了变量的特殊含义,GLSL中有如下修饰符: ·const – 声明一个编译期常量. ·attribute– 随不同顶点变化的全局变量,由OpenGL应用程序传给顶点shader. ...

  10. PrincipalView的使用参数

    4 G:\PrincipalView\model\m426.off 注意,路径是绝对路径,所以如果程序移位的话,要注意修改: 路径中不能包含空格