http://www.lydsy.com/JudgeOnline/problem.php?id=1038

本题可以使用三分法

将点按横坐标排好序后

对于任意相邻两个点连成的线段,瞭望塔的高度 是单峰函数,而且是下凸函数

感性理解单峰就是

瞭望塔建的靠左,为了能看到右边的,要高一点

瞭望塔建的靠右,为了能看到左边的,要高一点

所以

枚举所有线段,三分线段上建造瞭望塔的位置,所有线段上的瞭望塔高度取最小

#include<cmath>
#include<cstdio>
#include<algorithm>using namespace std;#define N 301const double eps=1e-7;int n;struct POINT
{double x,y;
}e[N];struct LINE
{double k,b;bool exit;
}l[N];bool cmp(POINT p,POINT q)
{return p.x<q.x;
}double cal(double x,double y)
{double tmp=0;for(int i=1;i<n;++i){if(!l[i].exit) continue;tmp=fmax(tmp,l[i].k*x+l[i].b-y);}return tmp;
}int main()
{scanf("%d",&n);for(int i=1;i<=n;++i) scanf("%lf",&e[i].x);for(int i=1;i<=n;++i) scanf("%lf",&e[i].y);sort(e+1,e+n+1,cmp);for(int i=1;i<n;++i){if(fabs(e[i].x-e[i+1].x)<eps) continue;l[i].k=(e[i].y-e[i+1].y)/(e[i].x-e[i+1].x);l[i].b=e[i].y-e[i].x*l[i].k;l[i].exit=true;}double L,R,mid1,mid2;int T;double ans=1e20;for(int i=1;i<n;++i){if(!l[i].exit) continue;T=100; L=e[i].x; R=e[i+1].x;while(T--){mid1=L+(R-L)/3; mid2=R-(R-L)/3;if(cal(mid1,l[i].k*mid1+l[i].b)<cal(mid2,l[i].k*mid2+l[i].b)) R=mid2;else L=mid1;}ans=fmin(ans,cal(mid1,l[i].k*mid1+l[i].b));}printf("%.3lf",ans);
}

1038: [ZJOI2008]瞭望塔

Time Limit: 10 Sec  Memory Limit: 162 MB
Submit: 2658  Solved: 1084
[Submit][Status][Discuss]

Description

  致力于建设全国示范和谐小村庄的H村村长dadzhi,决定在村中建立一个瞭望塔,以此加强村中的治安。我们
将H村抽象为一维的轮廓。如下图所示 我们可以用一条山的上方轮廓折线(x1, y1), (x2, y2), …. (xn, yn)来描
述H村的形状,这里x1 < x2 < …< xn。瞭望塔可以建造在[x1, xn]间的任意位置, 但必须满足从瞭望塔的顶端可
以看到H村的任意位置。可见在不同的位置建造瞭望塔,所需要建造的高度是不同的。为了节省开支,dadzhi村长
希望建造的塔高度尽可能小。请你写一个程序,帮助dadzhi村长计算塔的最小高度。

Input

  第一行包含一个整数n,表示轮廓折线的节点数目。接下来第一行n个整数, 为x1 ~ xn. 第三行n个整数,为y1
 ~ yn。

Output

  仅包含一个实数,为塔的最小高度,精确到小数点后三位。

Sample Input

【输入样例一】
6
1 2 4 5 6 7
1 2 2 4 2 1
【输入样例二】
4
10 20 49 59
0 10 10 0

Sample Output

【输出样例一】
1.000
【输出样例二】
14.500

HINT

N ≤ 300,输入坐标绝对值不超过106,注意考虑实数误差带来的问题。

转载于:https://www.cnblogs.com/TheRoadToTheGold/p/7923005.html

bzoj千题计划126:bzoj1038: [ZJOI2008]瞭望塔相关推荐

  1. bzoj1038 [ZJOI2008]瞭望塔(半平面交)

    bzoj1038 [ZJOI2008]瞭望塔 原题地址:http://www.lydsy.com/JudgeOnline/problem.php?id=1038 题意: 村中要建立一个瞭望塔,我们将H ...

  2. bzoj1038 [ZJOI2008]瞭望塔

    Description 致力于建设全国示范和谐小村庄的H村村长dadzhi,决定在村中建立一个瞭望塔,以此加强村中的治安.我们 将H村抽象为一维的轮廓.如下图所示 我们可以用一条山的上方轮廓折线(x1 ...

  3. [BZOJ1038][ZJOI2008]瞭望塔(半平面交)

    题目: 我是超链接 题解: 很显然,只有瞭望塔和每个山顶形成直线的斜率的绝对值大于对应山坡的斜率,这个山坡才能看见.不难想到对所有的山坡求一个半平面交然后找到有山顶存在的部分,这个n<=300也 ...

  4. bzoj1038: [ZJOI2008]瞭望塔

    Description 致力于建设全国示范和谐小村庄的H村村长dadzhi,决定在村中建立一个瞭望塔,以此加强村中的治安.我们 将H村抽象为一维的轮廓.如下图所示 我们可以用一条山的上方轮廓折线(x1 ...

  5. BZOJ 2150. 部落战争(最小路径覆盖问题)【BZOJ千题计划】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 刷题就图一乐 题目链接 https://hydro.ac/d/bzoj/p/2150 是 hydro ...

  6. BZOJ 2151 种树(可反悔贪心,链表)【BZOJ千题计划】就图一乐

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 https://hydro.ac/d/bzoj/p/2151 是 hydro 的 BZOJ ...

  7. BZOJ 1799 [Ahoi2009] self 同类分布(数位DP)【BZOJ千题计划(quexin】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 https://hydro.ac/d/bzoj/p/1799(样例时限设置有问题,应该为 2 ...

  8. bzoj千题计划143:bzoj1935: [Shoi2007]Tree 园丁的烦恼

    http://www.lydsy.com/JudgeOnline/problem.php?id=1935 二维偏序问题 排序x,离散化树状数组维护y #include<cstdio> #i ...

  9. bzoj千题计划207:bzoj1879: [Sdoi2009]Bill的挑战

    http://www.lydsy.com/JudgeOnline/problem.php?id=1879 f[i][j] 表示匹配了i个字符,匹配字符串的状态为j的方案数 枚举下一个字符是什么 计算加 ...

最新文章

  1. java中sleep()、wait()相同与不同详解
  2. linux yum错误 14: PYCURL ERROR 6 - Couldn't resolve host 'mirrorlist.centos.org'
  3. FUN ALV TOOLBAR 增加自定义按钮
  4. 美团点评联盟广告场景化定向排序机制
  5. docker swarm快速搭建mogodb集群
  6. Web定时器 - Timer
  7. Streaming HTTP responses【翻译】
  8. 关于mysql文件的.frm文件的导入
  9. 如何将c语言中的文件,急求如何将下列C语言程序数据存储到文件中?
  10. 高并发处理【电商抢购】(转)
  11. python是什么类型的编程语言-Python是一种什么样的编程语言?解释?编译?汇编?机械?...
  12. 30K iOS程序员的简述:如何快速进阶成为高级开发人员
  13. keras ImageDataGenerator数据增强
  14. 计算机控制课设串级回路,计算机控制系统课程设计
  15. alc662声卡注入id_使用Clover 开启ALC662声卡原生AppleHDA驱动
  16. JS 绘制 Cardinal 样条曲线
  17. sis最新ip地址2020_2020秋招经验分享
  18. JAVA中(PO,VO,TO,BO,DAO,POJO)分别是指什么
  19. IT开发的岔路口:究竟是Java好还是嵌入式好?
  20. 酷炫机器人简笔画图片_卡通机器人简笔画图片

热门文章

  1. 2021-2022学年——嵌入式系统实践实验5_Time实验
  2. docker网络模式与none模式配置网络
  3. 成功登陆港交所,顺丰同城的“跑腿”生意好做吗?
  4. I.MX6ULL ARM驱动开发---设备树下的platfrom设备驱动
  5. 指令集os系统部署用户应用教程
  6. 专项测试实战 | 如何测试 App 流畅度(基于 FPS 和丢帧率)?
  7. 直流电压和电流数据记录器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  8. 诺奖评委、工业 4.0 教父沃夫冈解读AI研究大趋势
  9. WCF从理论到实践(17):OO大背离(带视频+ppt+源码)
  10. Android端适老化与无障碍改造