LOJ 10002 喷水装置 未完
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 喷水装置 未完的更多相关文章
- LOJ #10002. 喷水装置
题目 裸的贪心. 基本思想见图: Code: #include<iostream> #include<cstdio> #include<cstring> #incl ...
- javascript有用小功能总结(未完待续)
1)javascript让页面标题滚动效果 代码如下: <title>您好,欢迎访问我的博客</title> <script type="text/javasc ...
- ASP.NET MVC 系列随笔汇总[未完待续……]
ASP.NET MVC 系列随笔汇总[未完待续……] 为了方便大家浏览所以整理一下,有的系列篇幅中不是很全面以后会慢慢的补全的. 学前篇之: ASP.NET MVC学前篇之扩展方法.链式编程 ASP. ...
- 关于DOM的一些总结(未完待续......)
DOM 实例1:购物车实例(数量,小计和总计的变化) 这里主要是如何获取页面元素的节点: document.getElementById("...") cocument.query ...
- 我的SQL总结---未完待续
我的SQL总结---未完待续 版权声明:本文为博主原创文章,未经博主允许不得转载. 总结: 主要的SQL 语句: 数据操作(select, insert, delete, update) 访问控制(g ...
- virtualbox搭建ubuntu server nginx+mysql+tomcat web服务器1 (未完待续)
virtualbox搭建ubuntu server nginx+mysql+tomcat web服务器1 (未完待续) 第一次接触到 linux,不知道linux的确很强大,然后用virtualbox ...
- MVC丶 (未完待续······)
希望你看了此小随 可以实现自己的MVC框架 也祝所有的程序员身体健康一切安好 ...
- 一篇文章让Oracle程序猿学会MySql【未完待续】
一篇文章让Oracle DB学会MySql[未完待续] 随笔前言: 本篇文章是针对已经能够熟练使用Oracle数据库的DB所写的快速学会MySql,为什么敢这么说,是因为本人认为Oracle在功能性方 ...
- [教程] [承風雅傳HSU]用ES4封裝Win7---ES4 Win7封裝教程(未完待續)
[教程] [承風雅傳HSU]用ES4封裝Win7---ES4 Win7封裝教程(未完待續) a10036it 发表于 2015-7-27 21:11:19 https://www.itsk.com/t ...
随机推荐
- 小程序md5加密
function md5(string) { var x = Array(); var k, AA, BB, CC, DD, a, b, c, d; , S12 = , S13 = , S14 = ; ...
- Vue打包npm run build 打包后空白怎么解决?
问题一:路径报错并且页面空白 解决:buld/index.js assetsPublicPath: '/'修改为 assetsPublicPath: './' 问题二:没报错页面空白 ro ...
- 微信小程序如何使用iconfont阿里巴巴图标库?
步骤: 1.如图先下载: 2.找到iconfont.css改为iconfont.css 3.修改iconfont.wxss文件的内容,如图复制内容至其文件 4.替换到文件页面当中 5.去页面中引入i ...
- Dynamic CRM插件调试与单元测试
背景 使用Dynamic CRM平台开发完业务插件后,不可避免的就是进行插件调试,测试插件是否正常运行,网上关于Dynamic CRM的资料比较少,但对于调试的博客还是挺多的,足可见插件调试对于Dyn ...
- Java Design Pattern(Factory,Singleton,Prototype,Proxy)
一.Factory 设计模式: the most common pattern,create a new object ,eg. A a=new A();工厂模式的好处:工厂模式可以做到把创建对象单独 ...
- CentOS 7 配置nginx并默认强制使用https对http进行跳转
1.安装nginx yum install nginx 2.启动nginx服务 service nginx start 3.开启防火墙80端口,云服务器和本地虚拟服务器各有不同,不再赘述. 4.访问你 ...
- day 04 list,元祖
1,作业讲解 # s = '132a4b5c' # s1 = s[0]+s[2]+s[1] # print(s1) index = 0 # while 1: # print(s[index]) # i ...
- java-猜数字
package com.jijy.circle; import java.util.Scanner; import java.util.Random; public class demo5 { pub ...
- Ubuntu16.04下安装sublime text3
通过ppa安装,打开终端,输入以下命令: sudo add-apt-repository ppa:webupd8team/sublime-text-3 sudo apt-get update sudo ...
- mybatis-generator 代码自动生成工具包
怎么用mybatis-gennerator插件自动生成mybatis所需要的dao.bean.mapper xml文件.请看↓ 1.在D盘新建一个文件夹,命名:generator(或者其他盘其他名字也 ...