[POJ2187][BZOJ1069]旋转卡壳
旋转卡壳
到现在依然不确定要怎么读...
以最远点对问题为例,枚举凸包上的两个点是最简单的想法,时间复杂度O(n2)
我们想象用两条平行线卡着这个凸包,当其中一个向某个方向旋转的时候另一个显然也是朝同样的方向旋转
所以在枚举其中一条边的过程中完全没有必要重新枚举另一条边
而且对于一条边而言,凸包上的点到这条边的距离是满足单峰性质的
所以线性的做法就出来啦
↓代码非常短很优秀~
[UPD.05.11]:回过头来复习的时候猛然发现这里没有讲它过程的原理...
为什么叉积大的离水平线的距离更远一些?因为叉积可以表示(i,i+1,j)三点构成三角形的面积的两倍
而三角形面积=1/2底*高在这里也就是线段(i,i+1)*点j到水平线的距离,所以叉积越大距离就越远了~
然而由于使用旋转卡壳是在已经求出凸包的基础之上的,所以叉积的值必为正,就不用考虑负面积的问题了
procedure Roatating_Calipers;
begin
stack[len+]:=stack[];j:=;
ans:=;
for i:= to len do
begin
while cross(stack[i],stack[i+],stack[j])<cross(stack[i],stack[i+],stack[j+]) do j:=j mod len+;
ans:=max(ans,max(getdis(stack[i],stack[j]),getdis(stack[i+],stack[j+])));
end;
end;
POJ2187 最远点对问题直接用RC
BZOJ1069 可以枚举一条对角线,在两边各找出一个点使得面积和最大,两边在保证在某个区间内的情况下做RC
BZOJ1185 是一道非常好的题,但目前还没有A掉...昨天奋战了一个晚上但在精度问题上还是卡住了
最小矩形根据黑书上的写法采用最小角前进,然而黄学长的做法代码又短又好看
发现只要引入点积会有一些奇妙的性质
在确定了一条边的时候找最远的边直接是裸的RC
然而怎么找这个矩形里最左的点和最右的点?
结论:点积越大越右,点积越小越左。
这个稍加证明即可。
[POJ2187][BZOJ1069]旋转卡壳的更多相关文章
- poj2187 Beauty Contest(旋转卡壳)
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud Beauty Contest Time Limit: 3000MS Memor ...
- BZOJ1069 SCOI2007最大土地面积(凸包+旋转卡壳)
求出凸包,显然四个点在凸包上.考虑枚举某点,再移动另一点作为对角线,容易发现剩下两点的最优位置是单调的.过程类似旋转卡壳. #include<iostream> #include<c ...
- BZOJ1069 [SCOI2007]最大土地面积 【凸包 + 旋转卡壳】
题目链接 BZOJ1069 题解 首先四个点一定在凸包上 我们枚举对角线,剩下两个点分别是两侧最远的点 可以三分,复杂度\(O(n^2logn)\) 可以借鉴旋转卡壳的思想,那两个点随着对角线的一定单 ...
- POJ2187 Beauty Contest (旋转卡壳算法 求直径)
POJ2187 旋转卡壳算法如图 证明:对于直径AB 必然有某一时刻 A和B同时被卡住 所以旋转卡壳卡住的点集中必然存在直径 而卡壳过程显然是O(n)的 故可在O(n)时间内求出直径 凸包具有良好的性 ...
- 【BZOJ-1069】最大土地面积 计算几何 + 凸包 + 旋转卡壳
1069: [SCOI2007]最大土地面积 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 2707 Solved: 1053[Submit][Sta ...
- [USACO2003][poj2187]Beauty Contest(凸包+旋转卡壳)
http://poj.org/problem?id=2187 题意:老题了,求平面内最远点对(让本渣默默想到了悲剧的AHOI2012……) 分析: nlogn的凸包+旋转卡壳 附:http://www ...
- POJ2187(旋转卡壳)
Beauty Contest Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 35459 Accepted: 10978 ...
- bzoj1069 [SCOI2007]最大土地面积 旋转卡壳
1069: [SCOI2007]最大土地面积 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 3767 Solved: 1501[Submit][Sta ...
- BZOJ1069 SCOI2007 最大土地面积 凸包、旋转卡壳
传送门 在这里假设可以选择两个相同的点吧-- 那么选出来的四个点一定会在凸包上 建立凸包,然后枚举这个四边形的对角线.策略是先枚举对角线上的一个点,然后沿着凸包枚举另一个点.在枚举另一个点的过程中可以 ...
随机推荐
- Spring MVC - URL路径映射
1. 普通映射 A. @RequestMapping("/test1") B. @RequestMapping(value={"/test1", "/ ...
- deeplearning.ai课程学习(3)
第三周:浅层神经网络(Shallow neural networks) 1.激活函数(Activation functions) sigmoid函数和tanh函数两者共同的缺点是,在z特别大或者特别小 ...
- c++知识点总结--函数模板
通用函数可变参模板 用于处理不限定参数的函数 showall(){//空函数,接口,最后结束递归 } template<typename T,typename... Args> void ...
- winform timer时间间隔小于执行时间
如果SetTimer的时间间隔为t,其响应事件OnTimer代码执行一遍的时间为T,且T>t.这样,一次未执行完毕,下一次定时到,这时候程序会如何执行? 可能的情况:1.丢弃还未执行的代码,开始 ...
- 个人作业Week3-案例分析(201521123103 吴雅娟)
根据博客要求,写一篇个人随笔 参考来自: http://www.cnblogs.com/xinz/archive/2012/03/26/2417699.html: http://www.cnblogs ...
- windows下Memcached 架设及java应用(转)
1 Memcache是什么 Memcache是danga.com的一个项目,最早是为 LiveJournal 服务的,目前全世界不少人使用这个缓存项目来构建自己大负载的网站,来分担数据库的压力. 它可 ...
- dp类模板
1.n串最长公共子序列 #include<cstdio> #include<cstring> #include<algorithm> using namespace ...
- Codeforces Round #390 (Div. 2) E(bitset优化)
题意就是一个给出2个字符矩阵,然后进行匹配,输出每个位置的匹配的结果 (超出的部分循环处理) 一种做法是使用fft,比较难写,所以没有写 这里使用一个暴力的做法,考虑到一共只出现26个字符 所以使用一 ...
- NS产品演进
NS产品演进 Citrix产品体系================ Citrix产品类别================ NS产品演进================ 产品联系方式========== ...
- [洛谷P4568][JLOI2011]飞行路线
题目大意:最短路,可以有$k$条边无费用 题解:分层图最短路,建成$k$层,层与层之间的边费用为$0$ 卡点:空间计算出错,建边写错 C++ Code: #include <cstdio> ...