题目大意 给你一座山,山的形状在二维平面上为折线 给出\((x_1,y_1),(x_2,y_2)...(x_n,y_n)\)表示山的边界点或转折点 现在要在\([x_1,x_n]\)(闭区间)中选择一个点中建立瞭望塔 要求瞭望塔能看到山的任意一个地方 求满足条件的瞭望塔最矮能多矮 样例如图 分析 对于一个山坡,它能被看到,当且仅当在瞭望塔在山坡对应的直线上方 可以理解为半平面交 也可以像\(~\) 水平可见直线 \(~\)那样理解 由于建的区间还有要限制在\([x_1,x_n]\) 我们额外加两…
1038: [ZJOI2008]瞭望塔 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2999  Solved: 1227[Submit][Status][Discuss] Description 致力于建设全国示范和谐小村庄的H村村长dadzhi,决定在村中建立一个瞭望塔,以此加强村中的治安.我们 将H村抽象为一维的轮廓.如下图所示 我们可以用一条山的上方轮廓折线(x1, y1), (x2, y2), …. (xn, yn)来描 述H村的形状,…
Description 致力于建设全国示范和谐小村庄的H村村长dadzhi,决定在村中建立一个瞭望塔,以此加强村中的治安.我们将H村抽象为一维的轮廓.如下图所示 我们可以用一条山的上方轮廓折线(x1, y1), (x2, y2), …. (xn, yn)来描述H村的形状,这里x1 < x2 < …< xn.瞭望塔可以建造在[x1, xn]间的任意位置, 但必须满足从瞭望塔的顶端可以看到H村的任意位置.可见在不同的位置建造瞭望塔,所需要建造的高度是不同的.为了节省开支,dadzhi村长希望…
题目链接 BZOJ/洛谷 题目描述 致力于建设全国示范和谐小村庄的H村村长dadzhi,决定在村中建立一个瞭望塔,以此加强村中的治安. 我们将H村抽象为一维的轮廓.如下图所示: 我们可以用一条山的上方轮廓折线\((x_1,y_1),(x_2,y_2)-(x_n,y_n)\)来描述H村的形状,这里\(x_1 < x_2 < -< x_n\).瞭望塔可以建造在\([x_1,x_n]\)间的任意位置,但必须满足从瞭望塔的顶端可以看到H村的任意位置.可见在不同的位置建造瞭望塔,所需要建造的高度是…
题目大意 这里有一场赛车比赛正在进行,赛场上一共有N辆车,分别称为g1,g2--gn.赛道是一条无限长的直线.最初,gi位于距离起跑线前进ki的位置.比赛开始后,车辆gi将会以vi单位每秒的恒定速度行驶.在这个比赛过程中,如果一辆赛车曾经处于领跑位置的话(即没有其他的赛车跑在他的前面),这辆赛车最后就可以得奖,而且比赛过程中不用担心相撞的问题.现在给出所有赛车的起始位置和速度,你的任务就是算出那些赛车将会得奖. 分析 一辆车的函数就是\(f_i(x)=k_i x +b_i\) 那题目就是要使得有…
2618: [Cqoi2006]凸多边形 半平面交 注意一开始多边形边界不要太大... #include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #include <cmath> #define y1 y1z using namespace std; typedef long long ll; const double eps = 1e-10, in…
题面 BZOJ题面 思路 半平面交代码讲解戳这里,用的就是这道题 我们射箭的函数形如$y=Ax^2+Bx$ 考虑每一个靶子$(x_0,y_1,y_2)$,实际上是关于$A,B$的不等式限制条件 我们只要求出有没有$(A,B)$满足所有$2*n$个限制条件就可以了 考虑一个限制条件$y_1\leq Ax_0^2+Bx_0\leq y_2$ 把一个$x_0$除过去,可以得到$B$关于$A$的半平面两个: $B\geq -x_0A+\frac{y_1}{x_0}$ $B\leq -x_0A+\frac…
地址:http://poj.org/problem?id=1279 题目: Art Gallery Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 7329   Accepted: 2938 Description The art galleries of the new and very futuristic building of the Center for Balkan Cooperation have the f…
求半平面交的算法是zzy大神的排序增量法. ///Poj 1474 #include <cmath> #include <algorithm> #include <cstdio> using namespace std; ; //点 class Point { public: double x, y; Point(){} Point(double x, double y):x(x),y(y){} bool operator < (const Point &…
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1038 [题意] 找一个最低塔高使可以看到村庄的每一个角落. [思路] 半平面交 能够看到一个线段的点都在该线段所在直线的上方,如果能看到所有的线段则该区域就是所有线段所在直线的半平面交. 最低塔高就是要求这个区域与村庄之间的最短距离.无论是交还是村庄都可以看作是分段的一次函数,所以最近距离一定在分段点处取得.分别枚举交和村庄的分段点即可. 需要注意的有:预先添加两个边界.求最近距离时…