LOJ 10002 奉旨写题解


来一份蒟蒻题解,真香。  

我来带大家梳理一下思路:
1. 输入

  (1)首先我们要注意一种情况:
  

  如图,那个小圆,在图中我们发现,这个小圆小到一定程度时,是不接触此矩形的。

  即

    R < d (R为半径,d为圆心距)

  我们在处理输入时就可以直接抹去。

·  (2)其次,我们可以发现,当 d>R圆 时,就有圆与线段的两个交点。计算这两个交点,根据勾股定理,有

    L=sqrt(R*R±d*d)

 

2. 排序。(贪心策略)

根据这道题的目标,我们可以得到贪心策略。

bool cmp(seg a, seg b) { return a.l < b.l || a.l==b.l && a.r>b.r; }

这样,那些开始前,覆盖面积大的优质的喷水器就被找出来了再**比例失衡的时代,要找优质的

3. 处理。

如代码,定义i为扫描指针,从头扫到尾,再挂一个t,记录上一次的结尾,并不断更新。s是记录t的初始值的,用来比较第i个节点的开头于上一次结尾的大小,如HZR所言。当t,s不再更新,也就是已经扫到了结尾或已经全部覆盖时,就标记opt,最后用opt判有无解,完美结束。

#include <bits/stdc++.h>

using namespace std;
const int maxn = 2e4 + ;
struct seg {
double l, r;
} a[maxn];
bool cmp(seg a, seg b) { return a.l < b.l||a.l==b.l&&a.r>b.r; }
int main() {
int n, l, w, T;
scanf("%d", &T);
while (T--) {
int x, r, cnt = ;
scanf("%d%d%d", &n, &l, &w);
while (n--) {
scanf("%d%d", &x, &r);
if (r >= w) {
a[cnt].l = x * 1.0 - sqrt(r * r - w * w / 4.0);
a[cnt++].r = x * 1.0 + sqrt(r * r - w * w / 4.0);
          // 勾股过程。
}
}
sort(a, a + cnt, cmp);//贪心
int opt = , ans = , i = ;
double t = ;
while (t < l) {
ans++;//增加喷水器
double s = t;
while (a[i].l <= s && i < cnt) {
          //a[i]的前<上个喷水器的后 且 i还在范围内
if (t < a[i].r)
t = a[i].r;
i++;
}
if (s == t && s < l) {
opt = ;
break;
}//如果s==t 且 s小于l(就是不行的情况,因为s铁定不能再超过l),就凉凉,opt=1
}
if (opt)
printf("-1\n");
else
printf("%d\n", ans);
}
return ;
}

LOJ 10002 喷水装置 未完的更多相关文章

  1. LOJ #10002. 喷水装置

    题目 裸的贪心. 基本思想见图: Code: #include<iostream> #include<cstdio> #include<cstring> #incl ...

  2. javascript有用小功能总结(未完待续)

    1)javascript让页面标题滚动效果 代码如下: <title>您好,欢迎访问我的博客</title> <script type="text/javasc ...

  3. ASP.NET MVC 系列随笔汇总[未完待续……]

    ASP.NET MVC 系列随笔汇总[未完待续……] 为了方便大家浏览所以整理一下,有的系列篇幅中不是很全面以后会慢慢的补全的. 学前篇之: ASP.NET MVC学前篇之扩展方法.链式编程 ASP. ...

  4. 关于DOM的一些总结(未完待续......)

    DOM 实例1:购物车实例(数量,小计和总计的变化) 这里主要是如何获取页面元素的节点: document.getElementById("...") cocument.query ...

  5. 我的SQL总结---未完待续

    我的SQL总结---未完待续 版权声明:本文为博主原创文章,未经博主允许不得转载. 总结: 主要的SQL 语句: 数据操作(select, insert, delete, update) 访问控制(g ...

  6. virtualbox搭建ubuntu server nginx+mysql+tomcat web服务器1 (未完待续)

    virtualbox搭建ubuntu server nginx+mysql+tomcat web服务器1 (未完待续) 第一次接触到 linux,不知道linux的确很强大,然后用virtualbox ...

  7. MVC丶 (未完待续······)

         希望你看了此小随 可以实现自己的MVC框架     也祝所有的程序员身体健康一切安好                                                     ...

  8. 一篇文章让Oracle程序猿学会MySql【未完待续】

    一篇文章让Oracle DB学会MySql[未完待续] 随笔前言: 本篇文章是针对已经能够熟练使用Oracle数据库的DB所写的快速学会MySql,为什么敢这么说,是因为本人认为Oracle在功能性方 ...

  9. [教程] [承風雅傳HSU]用ES4封裝Win7---ES4 Win7封裝教程(未完待續)

    [教程] [承風雅傳HSU]用ES4封裝Win7---ES4 Win7封裝教程(未完待續) a10036it 发表于 2015-7-27 21:11:19 https://www.itsk.com/t ...

随机推荐

  1. 『超分辨率重建』从SRCNN到WDSR

    超分辨率重建技术(Super-Resolution)是指从观测到的低分辨率图像重建出相应的高分辨率图像.SR可分为两类:    1. 从多张低分辨率图像重建出高分辨率图像    2. 从单张低分辨率图 ...

  2. activiti-explore(activiti5.17) 替换数据库

    http://blog.csdn.net/xiangwangye66/article/details/46943301

  3. 本地计算机上的 postgresql 服务启动后停止解决方法

    在启动 postgresql 服务是遇到这种情况: 解决方法: 打开计算机管理====>查看应用程序日志信息,可以看出,由于日志配置错误的问题. 找到 postgresql.conf 文件,做如 ...

  4. 【OS】Process & Thread

      Process Thread 定义 资源(CPU.内存等)分配的最小单元,是程序执行时的一个实例.程序运行时系统就会创建一个进程,并为它分配资源,然后把该进程放入进程就绪队列,进程调度器选中它的时 ...

  5. Jenkins结合shell脚本实现(gitLab/gitHub)前端项目自动打包部署服务器

    原始发布部署: 石器时代的我们,先是本地打包好项目,在去服务器上把原来的文件删了,然后回到本地copy到服务器: 这操看起来简单,实际部署的人就知道多烦了,假如来几个项目都要重新发布:那就爽了: 今天 ...

  6. 在浏览器端获取文件的MD5值

    前几天接到一个奇怪的需求,要在web页面中计算文件的md5值,还好这个项目是只需兼容现代浏览器的,不然要坑死了. 其实对文件进行md5,对于后端来说是及其简单的.比如使用Node.js,只要下面几行代 ...

  7. [CentOS] 环境变量设置的三种方法

    在CentOS系统中添加环境变量的方法有几种,推荐第三种方法.这里以添加 TexLive 2017 的环境变量为例进行说明. 1. 修改  ~/.bash_profile  文档,在文末添加以下代码: ...

  8. 常用算法的python实现

    1.乘法表 #! -*- coding:utf-8 -*- for i in range(1,10): for j in range(1,i+1): print('%d*%d=%d\t' % (i, ...

  9. MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example1.6 Defining Projections and Extents

    MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example1.6 Defining Projections and Extents 一.前言 当在m ...

  10. 初遇sass的两个小问题

    关于sass大家都知道是一种css的开发工具,原本的css没有变量 参数一类的东西,所以比较死 效率较慢. sass就是在css里面加入了一些编程的元素如变量等,让css能够更灵活,提高效率. 刚接触 ...