![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数学-计算几何
Maxwei_wzj
AFO
展开
-
【POJ1113】Wall-Graham-Scan算法求凸包
【POJ1113】Wall-Graham-Scan算法求凸包原创 2017-02-18 12:28:26 · 406 阅读 · 0 评论 -
【POJ2954】Triangle-Pick定理
测试地址:Triangle 题目大意:求处在一个三顶点都在整点上的三角形严格内部的整点数目。 做法:本题需要用到Pick定理。 Pick定理是一个很有趣的定理,对于任意一个顶点都在整点上的简单多边形,都有: 令SSS为多边形面积,P内P内P_内为多边形严格内部的整点数目,P边P边P_边为多边形边上的整点数目,那么S=P内+P边2−1S=P内+P边2−1S=P_内+\frac{P_边}{2}...原创 2018-07-06 10:16:58 · 221 阅读 · 0 评论 -
【CF605C】Freelancer's Dreams-凸包
测试地址:Freelancer’s Dreams题目大意: 有nnn项工作,每项工作有两项属性ai,bia_i,b_iai,bi,表示做111单位时间可以获得aia_iai的经验和bib_ibi的钱,现在要攒够ppp的经验和qqq的钱,且任意一个时刻只能做一项工作,每项工作进行的时间可以是任意非负实数,问要达到目标最少需要工作多少时间?做法: 本题需要用到凸包。好题。我们把一项工作看...原创 2018-10-21 16:59:58 · 300 阅读 · 0 评论 -
【BZOJ1336】Alien(Balkan2002)-最小圆覆盖
测试地址:Alien 做法:本题需要用到最小圆覆盖。 我们知道最小圆一定是点集中某三个点的外接圆,因此我们要找到这三个点。 求最小圆覆盖的算法是这样的: 先枚举一个iii,表示现在要求包含前iii个点的最小圆。 对于每一个iii,如果它不在当前求出的最小圆中,则把当前最小圆修改成点iii,然后继续进行下面的操作,否则继续枚举iii。 枚举jjj,表示现在要求包含第iii个点,且包含前j...原创 2018-07-08 17:16:09 · 305 阅读 · 0 评论 -
【HDU5299】Circles Game-扫描线+set+树上删边博弈
测试地址:Circles Game 题目大意:给定nnn个圆,圆两两之间只可能有相离或包含两种关系。两个人博弈,每次可以取走一个圆以及被这个圆包含的所有圆,不能取的人输,问先手必胜还是必败。 做法:本题需要用到扫描线+set+树上删边博弈。 两个圆之间只可能相离或包含,那么显然这种包含关系能够构成一座森林的形状。如果再将所有不被任何圆包含的圆与一个空点相连,这就是一棵树了。意识到我们每次取走...原创 2018-07-08 12:15:20 · 190 阅读 · 0 评论 -
【BZOJ1185】最小矩形覆盖(HNOI2007)-旋转卡壳
测试地址:最小矩形覆盖 做法:本题需要用到旋转卡壳。 根据直觉(实际上是我不会证),最小的矩形的一边一定在凸包上,于是我们在凸包上枚举其中的一边,顺便开三个指针求出对踵点,以及在当前边方向上最远的两个点,即可求出矩形挨着的点,这样就可以求出矩形的其它三个点了。于是我们就解决了这一题,求凸包的时间复杂度为O(nlogn)O(nlogn)O(n\log n),后面算法的时间复杂度为O(n)O(n...原创 2018-06-09 11:44:59 · 245 阅读 · 0 评论 -
【POJ1873】The Fortified Forest-凸包+枚举方案
【POJ1873】The Fortified Forest-凸包+枚举方案原创 2017-04-03 11:16:24 · 348 阅读 · 0 评论 -
【POJ2187】Beauty Contest-凸包+旋转卡壳
【POJ2187】Beauty Contest-凸包+旋转卡壳原创 2017-04-30 16:47:05 · 405 阅读 · 0 评论 -
【POJ2079】Triangle-旋转卡壳
【POJ2079】Triangle-旋转卡壳原创 2017-04-30 22:21:31 · 351 阅读 · 0 评论 -
【BZOJ1007】水平可见直线(HNOI2008)-栈+凸壳
【BZOJ1007】水平可见直线(HNOI2008)-栈+凸壳原创 2017-12-01 20:11:07 · 305 阅读 · 0 评论 -
【POJ1279】Art Gallery-半平面交
测试地址:Art Gallery 题目大意:给定一个多边形,求多边形内有多大的区域使得站在这些区域中的任何一点都可以看到整个多边形的内部。 做法:本题需要用到半平面交。 要能从一个点看到一条边,该点就必须在这条边连成的直线上靠内的那一侧,并且没有其他边遮挡。nnn条边就相当于有nnn个上述的限制条件,于是就相当于求半平面的交。 用排序增量法来解决这一问题。首先将所有半平面用向量表示,向量的...原创 2018-02-26 18:27:44 · 278 阅读 · 0 评论 -
【POJ3525】Most Distant Point from the Sea-半平面交+二分答案
测试地址:Most Distant Point from the Sea 题目大意:给定一个凸多边形,求凸多边形内某点到各边的最小距离的最大值。 做法:本题需要用到半平面交+二分答案。 首先答案显然具有单调性,所以我们二分答案,转化成判定性问题。 考虑答案ddd,我们只要将构成原凸多边形的半平面都向内缩ddd个单位长度,然后判定半平面交存不存在即可。因为不用排序,所以时间复杂度为O(n)O...原创 2018-02-27 23:23:09 · 266 阅读 · 0 评论 -
【BZOJ3630】镜面通道(JLOI2014)-最小割+计算几何
测试地址:镜面通道 做法:本题需要用到最小割+计算几何。 首先根据一个神奇的物理学定理:水能通过的地方,光就能通过,所以我们要求的就是AB和CD所属的平面区域连通,继而就是求上边界和下边界不能通过元件连通。因此我们在连通的两个元件之间连边,要求至少要去掉多少个点使得两个点不连通,我们发现这就是一个最小割,然而是对于点的最小割。对此我们把一个点拆成两个点,分为入点和出点,并将所有涉及该点的入边连...原创 2018-04-23 11:24:08 · 191 阅读 · 0 评论 -
【BZOJ3533】向量集(SDOI2014)-线段树+凸壳+二分
测试地址:向量集 做法:本题需要用到线段树+凸包+二分。 令询问的向量为(a,b)(a,b)(a,b),序列中第iii个向量为(xi,yi)(xi,yi)(x_i,y_i),那么要求l≤i≤rl≤i≤rl\le i\le r时,axi+byiaxi+byiax_i+by_i的最大值,令这个式子为kkk,则有: yi=−abxi+kbyi=−abxi+kby_i=-\frac{a}{b}x_i...原创 2018-05-20 12:28:16 · 385 阅读 · 0 评论 -
【BZOJ1062】糖果雨(NOI2008)-数形结合+二维树状数组
测试地址:糖果雨 做法:本题需要用到数形结合+二维树状数组。 这题看上去非常没有思路,因此我们来一步一步整理一下思路。 首先,我们要发现线段的颜色互不相同,并且移动的速度相等,这就说明它们的运动是周期性的,并且周期都是2len2len2len。原先我们要用一个三元组(t,l,r)(t,l,r)(t,l,r)来表示一条线段,而发现了上面的共性之后,我们就可以用一个二元组(time,length...原创 2018-06-13 11:38:58 · 444 阅读 · 0 评论 -
【BZOJ1069】最大土地面积(SCOI2007)-旋转卡壳
测试地址:最大土地面积 做法:本题需要用到旋转卡壳。 不难想到,最优的四个点一定都在凸包上,而一个四边形可以通过一条对角线切割为两个三角形,因此我们枚举对角线,在对角线的端点移动时顺便求出两边最大的三角形面积即可。显然三角形的另一个顶点是单调向同一个方向移动的,而且面积是一个单峰函数,用两个指针即可维护,时间复杂度为O(n2)O(n2)O(n^2)。 (太菜了,连这种计算几何基础题都不会做了...原创 2018-06-08 17:01:09 · 277 阅读 · 0 评论