当前位置: 首页 > news >正文

贪心 URAL 1303 Minimal Coverage

 

题目传送门

 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 
14 const int MAXN = 1e6 + 10;
15 const int INF = 0x3f3f3f3f;
16 struct Node
17 {
18     int l, r;
19 }node[MAXN], ans[MAXN];
20 
21 bool cmp(Node x, Node y)
22 {
23     if (x.l == y.l)    return x.r > y.r;
24     else    return x.l < y.l;
25 }
26 
27 int main(void)        //URAL 1303 Minimal Coverage
28 {
29     //freopen ("R.in", "r", stdin);
30 
31     int m;
32     while (scanf ("%d", &m) == 1)
33     {
34         int n = 0;    int u, v;
35         while (scanf ("%d%d", &u, &v) == 2 && (u || v))
36             node[++n].l = u, node[n].r = v;
37         sort (node+1, node+1+n, cmp);
38 
39         int k = 1;
40         for (int i=2; i<=n; ++i)        //cover
41         {
42             if (node[k].l < node[i].l && node[k].r < node[i].r)
43             {
44                 node[++k] = node[i];
45             }
46         }
47 
48         n = k;    int p = 0;    int cnt = 0;
49         node[n+1].l = node[n+1].r = m + 1;
50         for (int i=1; i<=n; ++i)
51         {
52             if (node[i].l <= p && p < node[i+1].l)
53             {
54                 ans[++cnt] = node[i];    p = node[i].r;
55             }
56             if (p >= m)
57             {
58                 printf ("%d\n", cnt);
59                 for (int i=1; i<=cnt; ++i)
60                 {
61                     printf ("%d %d\n", ans[i].l, ans[i].r);
62                 }
63                 break;
64             }
65         }
66 
67         if (p < m)    puts ("No solution");
68     }
69 
70     return 0;
71 }
72 
73 /*
74 No solution
75 */

 

转载于:https://www.cnblogs.com/Running-Time/p/4492502.html

相关文章:

  • 使用JS或jQuery模拟鼠标点击a标签事件代码
  • 创建activiti工作流所需23张表
  • Spring Userservice-用户登录,登录数据库密码存储以及防止暴力破解
  • 复习之webview(观看张荣超视频)
  • Android6 Socket通信
  • 给列表项目添加动画
  • R(1)Mac OS 下安装R语言开发环境
  • PHP自动加载__autoload的工作机制
  • UISlide属性
  • 521Today
  • 谷歌浏览器的粗略使用方法
  • 不错的网站
  • android:persistent属性
  • centos 7.0运行docker出现内核报错解决方法
  • 团队项目—第二阶段第四天
  • 2017-09-12 前端日报
  • 2017届校招提前批面试回顾
  • Hexo+码云+git快速搭建免费的静态Blog
  • JAVA_NIO系列——Channel和Buffer详解
  • js操作时间(持续更新)
  • Less 日常用法
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • React Transition Group -- Transition 组件
  • RxJS 实现摩斯密码(Morse) 【内附脑图】
  • 分类模型——Logistics Regression
  • 关于springcloud Gateway中的限流
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 如何编写一个可升级的智能合约
  • 什么软件可以剪辑音乐?
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • ​configparser --- 配置文件解析器​
  • ​渐进式Web应用PWA的未来
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • #include到底该写在哪
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • (04)odoo视图操作
  • (52)只出现一次的数字III
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第5节(封闭类和Final方法)
  • (笔试题)分解质因式
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (附源码)spring boot建达集团公司平台 毕业设计 141538
  • (免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐
  • (一)appium-desktop定位元素原理
  • (转)用.Net的File控件上传文件的解决方案
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • .dat文件写入byte类型数组_用Python从Abaqus导出txt、dat数据
  • .NET Core 2.1路线图
  • .net core使用RPC方式进行高效的HTTP服务访问
  • .NET 自定义中间件 判断是否存在 AllowAnonymousAttribute 特性 来判断是否需要身份验证
  • /usr/bin/python: can't decompress data; zlib not available 的异常处理
  • [1525]字符统计2 (哈希)SDUT
  • [Android]Android开发入门之HelloWorld
  • [bzoj1324]Exca王者之剑_最小割