E - 贪心-- 区间覆盖

题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=85904#problem/E

解题思路:

贪心思想,将问题转化为区间覆盖问题,将草地的上边界作为要覆盖的区间,计算出每个洒水器覆盖的区间范围,不能覆盖的舍去,然后将洒水器按覆盖范围的左边界升序排列。

要覆盖的最右边的点right的初始值为0,遍历洒水器,找一个能覆盖住right且覆盖范围的右边界最大的洒水器,然后将该洒水器覆盖的右边界作为新的right,重复刚才的过程,直到覆盖整个草地。

程序代码:

#include <cstdio>
#include <iostream>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
#define MAX 10005struct node
{double left, right;bool operator <(const node &a) const{return left < a.left;}
}p[MAX];int n, num;
double l, w;int main()
{int i;
// freopen("input.txt", "r", stdin);while(scanf("%d %lf %lf", &n, &l, &w) != EOF){num = 0;double po, r;for(i = 0; i < n; ++i){scanf("%lf %lf", &po, &r);if(r <= w/2) continue;double t = sqrt(r*r-w*w/4.0);p[num].left = po-t;p[num++].right = po+t;}sort(p, p+num);double left = 0, right = 0;bool flag = false;int result = 0;i = 0;if(p[0].left <= left){while(i < num){int j = i;while(j < num && left >= p[j].left){if(p[j].right > right)right = p[j].right;++j;}if(j == i) break;result++;left = right;i = j;if(left >= l){flag = true;break;}}}printf("%d\n", flag ? result : -1);}return 0;
}

View Code

转载于:https://www.cnblogs.com/www-cnxcy-com/p/4705875.html

高效算法——E - 贪心-- 区间覆盖相关推荐

  1. 贪心 区间覆盖最小值

    贪心 区间覆盖最小值 POJ 2376 大概题意: 从1到T区间内,必须保证每个点都有牛在工作,给出每头牛的工作时间,求需用到的最小的牛的数量,无解输出-1 一开始以为组合[1,4] [5,T]不算覆 ...

  2. 10382 - Watering Grass(贪心 区间覆盖问题)洒水面覆盖

    double qiuzhi(int id) {double t1=cc[id].rid*cc[id].rid;double t2=w*w/4;double t3=t1-t2;double t4=sqr ...

  3. 贪心---区间覆盖问题(水题)

    区间覆盖问题 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 设x1 , x2 ,-- , xn 是实直线上的n 个点. ...

  4. 区间覆盖全部类型及部分精选习题汇总详解(贪心策略)

    内容如下: 1)区间完全覆盖问题 问题描述:给定一个长度为m的区间,再给出n条线段的起点和终点(注意这里是闭区间),求最少使用多少条线段可以将整个区间完全覆盖 样例: 区间长度8,可选的覆盖线段[2, ...

  5. 贪心算法简单实践 -- 分糖果、钱币找零、最多区间覆盖、哈夫曼编解码

    1. 贪心算法概览 贪心算法是一种算法思想.希望能够满足限制的情况下将期望值最大化.比如:Huffman编码,Dijkstra单源最短路径问题,Kruskal最小生成树 等问题都希望满足限制的情况下用 ...

  6. 【算法笔记】:区间覆盖问题:贪心算法

    证明贪心算法的正确性: 下面证明: (1)最优子结构: 假设结果有n个区间,去掉最后一个区间及对应的点,则前n-1个区间仍然是覆盖所有点的所用的最少区间(最优解的子结构是子问题的最优解) 证明: cu ...

  7. 最高效的近似算法——贪心算法

    在解决一些问题的时候,有的问题要得到最优解是非常困难的.这个时候我们就不要再执着于最优解了,因为即便得到了最优解也可能是得不偿失的.采用贪心算法求解这个问题是一种折中的好方法. 所谓贪心算法就是在对问 ...

  8. *【UVA - 10382】Watering Grass(贪心,区间覆盖问题,思维)

    题干: 题目大意: 有一块草坪,长为l,宽为w,在它的水平中心线上有n个位置可以安装喷水装置,各个位置上的喷水装置的覆盖范围为以它们自己的半径ri为圆.求出最少需要的喷水装置个数,如果无论如何都不能覆 ...

  9. sdut 2074 区间覆盖问题(贪心)

    区间覆盖问题 Time Limit: 1000MS Memory limit: 65536K 题目描述 用i来表示x坐标轴上坐标为[i-1,i]的长度为1的区间,并给出n(1≤M≤200)个不同的整数 ...

最新文章

  1. 写给Linux系统运维的朋友
  2. Mysql数据库主从搭建
  3. 如何判断Javascript对象是否存在
  4. linux收发十六进制工具,linux下的十六进制编辑器---wxHexEdit
  5. 【收藏】k8s使用securityContext和sysctl
  6. 分数怎么化成带分数_人教版五年级下册第4单元带分数及把假分数化成整数或带分数教学视频+知识点...
  7. java mvc返回js_技术趋势:是什么让MVC悄然消失的?
  8. html语言 大全,HTML语言大全
  9. shell编程之 cut命令详解
  10. 30 分钟学 Erlang
  11. 学生学籍管理系统课程设计报告书
  12. RabbitMQ——01安装
  13. c语言里的函数和数学里面的函数有什么区别,计算机函数和数学函数有哪些区别和关系?...
  14. 2022-2028年中国仿制药产业深度调研及投资前瞻分析报告
  15. html模板改成织梦模板教程,织梦教程:如何用dedecms织梦模板搭建网站?
  16. OFD开发系列(二)-模板填充
  17. 龙之战神微信登录服务器,龙之战神微信登录版
  18. java内部模型,13 张图拆解 Java 中的内存模型
  19. QQ好友辅助验证不要信
  20. Java设计模式七大原则-开闭原则

热门文章

  1. objc@interface的设计哲学与设计技巧
  2. linux kernel 2.6.36 编译升级
  3. [J2ME]手机看交通监视器实时录像 实现说明
  4. 使用深度V8.1 系统后打开部分文件夹缓慢
  5. 004-ubuntu安装配置SSH服务
  6. BZOJ1415 [Noi2005]聪聪和可可 【SPFA + 期望dp记忆化搜索】
  7. 模块20135304——刘世鹏
  8. oracle 操作表
  9. CodeBlocks: 生成的exe文件自定义一个图标
  10. 比较不错的一个ios找茬游戏源码