
计算几何
jokerwyt
这个作者很懒,什么都没留下…
展开
-
Graham's Scan法求凸包
凸包 凸包(Convex Hull)是一个计算几何(图形学)中的概念。 在一个实数向量空间V中,对于给定集合X,所有包含X的凸集的交集S被称为X的凸包。 X的凸包可以用X内所有点(X1,…Xn)的线性组合来构造.上面的都没用. 给定二维平面上的点集,凸包就是将最外层的点连接起来构成的凸多边型,它能包含点集中所有的点。 可以想象成一圈橡皮筋收紧成的一圈 Graham′sScan原创 2016-06-27 19:23:11 · 1548 阅读 · 2 评论 -
jzoj2555 雾雨魔理沙
这题的质量还是不错的 其实不难,坑点就在几何上 可以把所有点都映射到Y轴上,这样就方便我们选y上的一段射♂出一炮 只要映射到Y轴上,那其实就是一个简单的DP分段不难求出(如果你学过三角函数的话),这条直线的斜率k=tan(α*π/180) (需要角度转为弧度) tan的意义就是对边比邻边的比值,相当与斜边的斜率 然后有直线方程y=kx+by=kx+b,已知xyk,求出b (b是直原创 2016-08-14 21:48:58 · 653 阅读 · 0 评论 -
jzoj4447 【HNOI2016模拟4.14】A (维护凸壳,分段函数)
题面 分析分开每个点求,显然一条最短路能作用很久。同一条最短路作用的部分我们是可以直接计算的。 先求出长度为k的最短路 随着时间增长,每一条路的长度都可以表示为一个一次函数 y=w+Lenxy=w+Lenx。 于是问题就变成了一次函数求凸壳。首先我们将所有直线按w从小到大排序,然后考虑一开始两条直线,按顺序记作l1,l2l1,l2。 现在要插入一条直线l3l3,Case0 若l3l3比原创 2017-07-15 19:40:11 · 584 阅读 · 0 评论 -
O(n)最小圆覆盖算法 (随机增量法)
为什么叫随机增量我也不知道 首先考虑一个点集A,设他的最小覆盖圆为g(A)。 g(A)是存在且唯一的。 (假设存在两个,则必定存在更小覆盖圆) 而且g(A)必定满足以下两者之一: 1. 圆上有三个(或以上)A中的点 2. 圆上有两个A中的点并且其连线为直径。 若上述条件不成立则显然有更小覆盖圆。(感性调整)就像这样: 记K(A)为A中在g(A)上的点集合,这样的点下文叫做关键原创 2018-01-31 20:19:30 · 2188 阅读 · 2 评论 -
jzoj3956. 【GDOI2015模拟12.20】鸡腿の梦境 (计算几何常见套路)
题意有n+1个圆,其中一号圆保证不与其他圆重合,其他圆可能重合。 现在要你移动1号圆,在不相交的情况下(允许相切),问能不能逃出2~n+1号圆的包围圈。 n<=400寄蒜几盒之所以写下这题是因为涉及到一些trick 首先比较显然可以将1号圆变为点,其他圆半径加上一号圆半径。然后将相交的圆的圆心间连上线段,现在的问题就变成是否存在一个多边形能将这个点包括在内。(只允许端点...原创 2018-07-10 20:01:28 · 270 阅读 · 0 评论 -
jzoj4033 【GCJ2009B】Min Perimeter (平面最小xx)
题面给你一个整数坐标的点集,询问点集中最小的三角形周长是多少。退化的三角形也是允许的(面积为0)。0&lt;n&lt;=1000000&lt;n&lt;=1000000原创 2018-07-12 20:12:24 · 180 阅读 · 0 评论 -
半平面交
存个板子首先加限制的四条边,然后先去平行,然后排极角序。每次加入一条边的时候,若队头两条线交点不在新半平面内,就出掉队尾。然后队头类似最后记得去掉尾部多加的半平面。jzoj6093#include <cstdio>#include <iostream>#include <cstring>#include <algorithm>#in...原创 2019-04-01 22:28:45 · 947 阅读 · 0 评论