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 ...
随机推荐
- 日常记Bug
前记:后端写代码应该对数据的交互更加掌握,不要被编码.数据模型细节坑住 Unicode编码.Django数据迁移偶尔产生的不稳定 处理细项工资记录模型: class TeachRoll(models. ...
- Commander
原文:https://www.npmjs.com/package/commander Commander.js Installation npm install commander --save Op ...
- java打jar包小总结
一 命令行方法 编译java 在bin目录下,也就是class所在目录下命令行输入如下命令进行归档处理 jar -cvf mylib.jar *.class 现在你可以看见一个已经生成的jar包了 此 ...
- react component onClick 函数带参数
<div onClick={this.toggleTip(true)}></div> toggleTip = shouldShowTip => () => { th ...
- bash: ./xxx 权限不够
Linux环境下要运行C编译的一个可执行文件play,终端cd到当前目录后输入./play,提示 bash: ./xxx 权限不够 用sudo, 提示 sudo:./play: command no ...
- QT:QHash的使用
QHash<QPointF, QVector<float>> data; 此时会报错说没有声明QPointF的Key类型 需要我们手动实现一个函数 static uint qH ...
- mysql索引的选择
一:索引的常见模型 1.哈希表(key-value)存储的数据结构 缺点:hash索引在做区间查询时,速度慢. 优点:hash索引很适用于等值查询的场景,比如memcached以及其他一些nosql引 ...
- SoapUI之cookie设置
一.测试背景: 1)接口测试需要完成注册-->登录-->充值,使用soapui构建好测试用例.设置断言后,运行结果如下: 2)recharge接口运行失败,继续查看该接口具体发送的请求及返 ...
- mysql的报错
这个错误是因为mysql的进程错误关闭导致的,我们需要把/var/lib/mysql/mysql.sock文件删除或者改名,之后再重启就ok
- Unity3d KeyCode 键盘各种键值详情
KeyCode :KeyCode是由Event.keyCode返回的.这些直接映射到键盘上的物理键. 值 对应键 Backspace 退格键 Delete Delete ...