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. SVN-Failed to run the WC DB work queue associated with

    解决方法:清空svn的队列 1.下载sqlite3.exe 2.找到你项目的.svn文件,查看是否存在wc.db 3.将sqlite3.exe放到.svn的同级目录 4.启动cmd执行sqlite3 ...

  2. jquery tab切换

    首先引入jquery.js <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...

  3. python实现单线程多任务非阻塞TCP服务端

    代码 # coding:utf- from socket import * # .创建服务器socket sock = socket(AF_INET, SOCK_STREAM) # .绑定主机和端口 ...

  4. selenium chromedriver geckodriver iedriverserver下载

    chromedriver与chrome的的对应版整理: chromedriver版本 chrome版本 v2.9 v31-v34 v2.10 v33-v36 v2.11 v36-v40 v2.12 v ...

  5. this的四种用法

    函数运行时,自动生成的一个内部对象,只能在函数内部使用 随着函数使用场合的不同,this的值也发生着改变,但是有一个总原则:this指的是调用函数的那个对象(核心) 1.纯粹的函数调用 this指的是 ...

  6. Java Design Pattern(Factory,Singleton,Prototype,Proxy)

    一.Factory 设计模式: the most common pattern,create a new object ,eg. A a=new A();工厂模式的好处:工厂模式可以做到把创建对象单独 ...

  7. URL组成部分详解

    URL组成部分详解 URL是Uniform Resource Locator的简写,统一资源定位符. 一个URL是由以下几部分组成的: scheme://host:port/path/?query-s ...

  8. Linux文件系统目录

    Linux操作系统目录呈树形结构,文件系统只有一个根目录,其余文件都是从根目录下延伸出来的 上图是一个Linux文件系统目录的展现,现在我们来看一下文件系统目录下相关目录及其功能 根目录( / ) L ...

  9. 9ci

  10. pyinstaller深入使用,打包指定模块,打包静态文件

    1.标准用法: pyinstall  **.py  直接打包    pyinstall -F **.py  打包成单文件    pyinstall -W **.py  去掉控制台窗口,黑窗口    p ...