「BZOJ1038」[ZJOI2008] 瞭望塔

2014年10月16日4,2098

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

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

题解

这个嘛。。。

半平面交求出来之后最后答案一定在山顶上或者求出来凸壳的顶点上

分段一次函数的极值只能在边界或分段点取到。。。——wyl

 

说点什么

提醒
avatar
wzy
wzy

黄学长,请问p的那个0和n+1的预处理原因是什么啊?

trackback

[…] 正解是模拟退火或半平面交。 […]

cw

黄学长,请问一下为啥第76行那个循环,除了边界一条边要加进去两次呢?

%%%hzw
%%%hzw

黄学长…这道题啥意思啊…没看懂….

PlatypusPro

在hpi里面为什么要维护一个L呢?我举不出L会变的例子…