题目传送门

现在要在山上的某个部位装一盏灯,使得这座山的任何一个部位都能够被看到。

给出最小的y坐标,如图的+号处就是y坐标最小的安装灯的地方。

这个题嘛...今年省选前学姐来我们(破烂)的机房串门的时候提到了这个题qwq学姐表示十分毒瘤qwq

压了很久今天终于做了qwq

因为问题说的太模糊了233,所以我们首先需要简化一下题意。(开始在如何判断能看到灯的问题上卡了很久)

题目其实说的是:把给出的(相邻的)拐点连成直线,找到一个点的纵坐标,使这个点在所有的直线上方或恰好在直线上。

仔细考虑一下这个其实是有二分单调性的,我们便可以二分要求的纵坐标。

首先我们把所有直线的信息求出(斜率、截距,详见必修2qwq)。

然后在二分答案的判定中,我们可以确定以二分出的答案为坐标的点在各直线上的横坐标。确定横坐标的范围,若横坐标范围是个合法的区间,我们就可以判定有解。

根据必修2的学习,我们知道斜率是一个易错点(逃),判定的时候需要分类讨论斜率大于0小于0等于0的情况(等于0很重要,防止整数被0除)

因为平时一直在做整数域上的二分,所以这次(恰巧打了一下实数域上的二分),这时需要尤其注意精度问题。

实数域二分例 eps用来控制精度,通常可取为1e-8

 while(l+eps<r)
{
double mid=(l+r)/;
if(check(mid)) r=mid;
else l=mid;
}

而且在算直线信息的时候还要乘上那个1.0,在强制类型转换。

Code

 #include<cstdio>
#include<algorithm>
#include<cmath>
#include<utility> using namespace std;
const double eps=1e-; int n;
pair<int,int>p[];
struct line{
double k,b;
}li[]; bool check(double x)
{
double l=-,r=;
for(int i=;i<n;i++)
{
if(li[i].k<) l=max(l,(x-li[i].b)/li[i].k);
else if(li[i].k>) r=min(r,(x-li[i].b)/li[i].k);
else if(li[i].k==&&li[i].b>x) return ;
}
return l<=r;
} int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++) scanf("%d%d",&p[i].first,&p[i].second);
for(int i=;i<n;i++)
{
li[i].k=1.0*(p[i+].second-p[i].second)/(p[i+].first-p[i].first);
li[i].b=1.0*p[i].second-li[i].k*p[i].first;
}
double l=,r=;
while(l+eps<r)
{
double mid=(l+r)/;
if(check(mid)) r=mid;
else l=mid;
}
printf("%.2lf",l);
return ;
}

Luogu P1663 山【二分答案/实数域】By cellur925的更多相关文章

  1. luogu P1663 山

    题目链接 luogu P1663 山 题解 只需要求出下凸包的最低点就好了 显然是由两个斜率相反的直线相交来的 盼下最低点为直线的情况 代码 #include<cstdio> #inclu ...

  2. Luogu P4403 [BJWC2008]秦腾与教学评估【二分答案】By cellur925

    题目传送门 这道题:真·凉心出题人. 二分答案,个人感觉其实并不只适用于有明显的"最大值最小/最小值最大"条件的题目,其实也可以称它为一种"优化的暴力".这题就 ...

  3. LuoguP2115 [USACO14MAR]破坏Sabotage【二分答案】By cellur925

    本来是想找一道生成树的题做的...结果被洛咕的标签骗到了这题...结果是二分答案与生成树一点mao关系都没有.... 题目大意:给你一个序列,请你删去某一个$l~r$区间的值($2<=i< ...

  4. Luogu P1542包裹快递【实数域二分】 By cellur925

    题目传送门 题目中说:最大值最小,显然是一个二分答案嘛qwq. 我们二分的答案显然是速度,但是由于实际中每一段的速度可能不同,所以这里我们把所有段进行的速度都定为二分出的答案. 二分的步骤好说,只是c ...

  5. luogu P1462 通往奥格瑞玛的道路--spfa+二分答案

    P1462 通往奥格瑞玛的道路 题目背景 在艾泽拉斯大陆上有一位名叫歪嘴哦的神奇术士,他是部落的中坚力量 有一天他醒来后发现自己居然到了联盟的主城暴风城 在被众多联盟的士兵攻击后,他决定逃回自己的家乡 ...

  6. Luogu P2920 时间管理【二分答案】

    二分答案水题. (像我这么蒻的人都能十几分钟A掉) https://www.luogu.org/problemnew/show/P2920 开始时间一定在从0到min(t[i]-s[i])的一段区间上 ...

  7. BZOJ 3993 Luogu P3324 [SDOI2015]星际战争 (最大流、二分答案)

    字符串终于告一段落了! 题目链接: (bzoj) https://www.lydsy.com/JudgeOnline/problem.php?id=3993 (luogu) https://www.l ...

  8. [luogu]P1800 software_NOI导刊2010提高(06)[DP][二分答案]

    [luogu]P1800 software_NOI导刊2010提高(06) 题目描述 一个软件开发公司同时要开发两个软件,并且要同时交付给用户,现在公司为了尽快完成这一任务,将每个软件划分成m个模块, ...

  9. [luogu]P2680 运输计划[二分答案][树上差分]

    [luogu]P2680 [NOIP2015]运输计划 题目背景 公元 2044 年,人类进入了宇宙纪元. 题目描述 L 国有 n 个星球,还有 n-1 条双向航道,每条航道建立在两个星球之间,这 n ...

随机推荐

  1. 【转载】细聊分布式ID生成方法

    一.需求缘起 几乎所有的业务系统,都有生成一个记录标识的需求,例如: (1)消息标识:message-id (2)订单标识:order-id (3)帖子标识:tiezi-id 这个记录标识往往就是数据 ...

  2. pdf reference 格式具体说明

    1. PDF概要 1.1. 图像模型 PDF能以平台无关.高效率的方式描叙复杂的文字.图形.排版. PDF 用图像模型来实现设备无关. 图像模型同意应用程序以抽象对象描叙文字.图像.图标.而不是通过详 ...

  3. android笔记5——同一个Activity中Fragment的切换

    今天来模拟一个注冊的界面过程: 点击"下一步"之后: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZW5zb24xNjg1NQ==/f ...

  4. Oracle RAC cache fusion原理測试

    Oracle RAC cache fusion是RAC最核心的工作机制.他把全部实例的SGA虚拟成一个大的SGA区,每当不同的实例请求同样的数据块,这个数据块就须要在实例间进行传递. 那究竟什么时候传 ...

  5. eclipse新建android项目出现非常多错误

    如图所看到的: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvSGFycnlXZWFzbGV5/font/5a6L5L2T/fontsize/400/fil ...

  6. Xammp修改端口

    How can I get XAMPP working on port 80 under Windows 10? By default, Windows 10 starts Microsoft IIS ...

  7. scala快速学习笔记(三):Collections,包

    VI.Collections 1.Array 一些常用方法:println,  map( _ * 2), filter(_ % 2 == 0),  sum,   reserve Array是不可变的, ...

  8. SpringMVC 学习笔记(四) 处理模型数据

    Spring MVC 提供了下面几种途径输出模型数据: – ModelAndView: 处理方法返回值类型为 ModelAndView时, 方法体就可以通过该对象加入模型数据 – Map及Model: ...

  9. 树状数组(二叉索引树 BIT Fenwick树) *【一维基础模板】(查询区间和+修改更新)

    刘汝佳:<训练指南>Page(194) #include <stdio.h> #include <string.h> #include <stdlib.h&g ...

  10. POJ2135 Farm Tour —— 最小费用最大流

    题目链接:http://poj.org/problem?id=2135 Farm Tour Time Limit: 1000MS   Memory Limit: 65536K Total Submis ...