凸包
Cyhlnj
这个作者很懒,什么都没留下…
展开
-
旋转卡壳求凸包直径
思路直径即最长的两点的距离 枚举凸包上的所有边,对每一条边找出凸包上离该边最远的顶点(用叉积),计算这个顶点到该边两个端点的距离,并记录最大的值。但是注意到当我们逆时针枚举边的时候,最远点的变化也是逆时针的,这样就可以不用从头计算最远点,而可以紧接着上一次的最远点继续计算。于是我们得到了O(n)的算法。复制的图 常数巨大的丑陋代码# include <stdio.h> # include <st原创 2017-07-30 22:42:20 · 338 阅读 · 0 评论 -
Graham凸包算法简介
凸包真是一个神奇的算法。。 概念 凸包,我理解为凸多边形 叉积 对于向量AB和向量BC,记向量AB*向量BC = AB * BC * sin ∠ABC,而叉积的绝对值其实就是S△ABC/2 对于平面上的一些点,我们要求凸包上所有的点,可以使用Graham算法 时间复杂度O(nlogn) 思路 先找到最左下的点,把其他的点按叉积排序。然后维护一个堆栈,每次利用叉积和...原创 2017-07-30 22:38:42 · 515 阅读 · 0 评论 -
BZOJ5317:[JSOI2018]战争(闵可夫斯基和)
令 a∈A,b∈Ba\in A,b\in Ba∈A,b∈B 则移动向量 ω\omegaω 使得存在 b+ω=ab+\omega=ab+ω=a 那么 ω\omegaω 需要满足 ω=a−b\omega=a−bω=a−b 黑科技:闵可夫斯基和 直接构造闵可夫斯基和 C=a+(−b)C={a+(−b)}C=a+(−b) 余下问题便是判断输入的移动向量是否在 CCC 内 可以强行使凸包的最下面为 (0,0...原创 2019-01-19 13:41:03 · 456 阅读 · 0 评论