计算几何
文章平均质量分 78
Freopen
这个作者很懒,什么都没留下…
展开
-
计算几何作业(下)
HDU 3320 openGL重要的就是绕任意轴旋转这个离谱操作。我们把绕一个轴顺时针旋转视为正方向(从轴的负方向往正方向看。)其中坐标系如图所示:那么容易发现绕zzz轴旋转正的α\alphaα的角度。相当于在OxyOxyOxy平面上顺时针绕α\alphaα,也就是x′=rcos(θ+α)=xcosα−ysinα,y′=rsin(θ+α)=ycosα+xsinα=sinαx+cosαyx' = r\cos(\theta + \alpha) =x\cos\alpha-y\sin\a原创 2020-06-17 15:13:35 · 422 阅读 · 0 评论 -
计算几何作业(上)
好多HDU的题,我想死。HDU 6325 Problem G. Interstellar Travel求从左到右字典序最小上凸壳,注意这个题不能选多个重点。AC Code\mathcal AC \ CodeAC Code#include<bits/stdc++.h>#define maxn 200005#define LL long long#define Ct const#define rep(i,j,k) for(int i=(j),LIM=(k);i&l原创 2020-06-16 11:58:24 · 338 阅读 · 0 评论 -
20200603模拟赛 安排(半平面交)
题解:不上升的序列,我们差分一下变成任意选值的序列,但是代价需要求个前缀和。所以现在就变成了每个点有kkk种代价,对所有点都定一个权重,求后k−1k-1k−1种带权重代价的最小值÷\div÷第一种的带权重代价。01分数规划,二分后直接变成求是否有方案后k−1k-1k−1种代价加减一些系数后都大于等于000。注意到这后k−1k-1k−1种代价加减有关第一种代价的系数后,变成了一个k−1k-1k−1维向量,我们需要选出一些向量使得他们的线性组合能坐标都非负。对于k=2k=2k=2的情况,直接判断是..原创 2020-06-03 22:25:07 · 294 阅读 · 0 评论 -
20200603 模拟赛 排列
题解:n!n!n!个排列可以看做n!n!n!个nnn维点,那么序列xxx可以被构造出来当且仅当xxx在这些点的凸包上(是刚好在表面上而非内部。)探索在凸包上的条件:1.∑x=n(n+1)2\sum x = \frac {n(n+1)}2∑x=2n(n+1)2.∑i=1kyi≥k(k+1)2\sum_{i=1}^k y_i \geq \frac {k(k+1)}2∑i=1kyi≥2k(k+1),其中yyy是给xxx按从小到大排序得到的数组。这两个条件都是必要的。第二个条件,因为前kkk..原创 2020-06-03 22:01:35 · 197 阅读 · 0 评论 -
操作最大子段和(线段树简单(毒瘤)操作,计算几何,差分约束)
题意:一次操作可以将序列中一个位置的值−−--−−求 对于1≤i≤K1\leq i \leq K1≤i≤K,iii次操作能造成的最小的最大子段和, 的和。序列长度n≤1e5n\leq 1e5n≤1e5,K≤1e13K \leq 1e13K≤1e13。问题转化:假设最大子段和为xxx,那么对于i<ji<ji<j连边(i→j)(i\rightarrow j)(i→j)权值为xxx。对于(i→j)(i\rightarrow j)(i→j)连边权值为aia_iai那么111到n+原创 2020-05-11 15:00:31 · 261 阅读 · 0 评论 -
LOJ #2008. 「SCOI2015」小凸想跑步(半平面交)
题目考虑第一个三角形和第iii个三角形。由题意我们需要前者面积小于后者。然后画一个这样的图,其中aaa为第一个三角形的底边(多边形上的边)。所以显然vpvpvp向量的右侧的所有点就是满足前者面积小于后者的PPP所以我们求出所有的这种分割向量然后做半平面交即可。这个向量可以用叉积相等(面积相等)+求出交点vvv来解。但是这个题真正恶心的是bbb与aaa平行的情况。但是我们写的标准半...原创 2020-01-05 21:41:14 · 166 阅读 · 0 评论 -
LOJ #6360. 复燃「恋之埋火」(最小高维圆覆盖)
题目前置知识1:最小圆覆盖前置知识2:nnn维圆上n+1n+1n+1点求圆心然后就可以解决此题了。首先最小圆覆盖的时间复杂度分析套用至高维是没有问题的。其次可以同样证明按照每次都从小到大的顺序枚举点是不会出现让你求共线的三个点,共面的四个点之类的外接高维圆的。最后求nnn维kkk个点都在圆上的最小圆覆盖,把这kkk个点互减得到k−1k-1k−1个向量基底,把圆心用这几个向量做基底表示出...原创 2019-12-27 18:03:22 · 401 阅读 · 0 评论 -
LOJ #6034. 「雅礼集训 2017 Day2」线段游戏(李超线段树)
题目主席树套李超树。一开始以为空间是O(nlog2n)O(n\log^2n)O(nlog2n)的。然后发现这个神奇的数据结构(李超树)是O(n)O(n)O(n)空间的。。。。注意不要往李超树里面加斜率不存在的线段,好像处理不了的样子,在外面简单维护即可。时间复杂度O(nlog2n)O(n\log ^2n)O(nlog2n)AC Code\mathrm {AC \ Code...原创 2019-12-26 20:33:47 · 253 阅读 · 0 评论 -
最小圆覆盖
讲得很好的一篇博客具体来讲就是把一个引理运用的淋漓尽致。引理:如果一个点集的最小圆覆盖没有覆盖这个点,那么这个点在,这个点集加上这个点的新点集的最小覆盖圆(边界)上。证明:反证,如果不在,那么显然新点集的最小覆盖圆就应该是原点集的最小覆盖圆。(这个。。。卡圆来调整证明吧,我显然一下。)所以我们可以求出前i−1i-1i−1个点的最小覆盖圆,如果第iii个点不在其中,那么第iii个点一定在前i...原创 2019-12-25 22:09:34 · 470 阅读 · 0 评论 -
LOJ #2159. 「POI2011 R1」收缩点 Plot(最小圆覆盖,倍增代替二分)
题目首先可以二分答案ansansans。然后再从左往右在最小圆半径<=ans<=ans<=ans的情况下尽量多分点在同一组。因为最小圆覆盖需要随机,所以不能直接从左往右加。这个过程也不能二分,因为checkcheckcheck的复杂度是O(二分答案)O(二分答案)O(二分答案)的。但是发现我们有总答案=n=n=n于是可以用倍增代替二分,那么我们checkcheckch...原创 2019-12-25 22:08:54 · 211 阅读 · 0 评论 -
LOJ #2022. 「AHOI / HNOI2017」队长快跑 (单调队列,转化思想,计算几何)
题目题意:平面上有nnn条射线,求从(0,0)(0,0)(0,0)到(Tx,Ty)(Tx,Ty)(Tx,Ty)最短合法路径长度(保证存在合法路径),合法路径是指不经过射线(可以经过不被其他射线覆盖的端点)的,任意时刻走的方向在xxx轴正方向上的投影为正的一条路径。题解:首先,可以发现对于每条射线,我们都是从下或从上绕过去,那么可以把每条射线调整为竖直向上或向下。然后我们想到可以dpdpdp...原创 2019-12-24 15:16:00 · 401 阅读 · 0 评论 -
CF372E Drawing Circles is Fun(圆反演,组合计数)
题目题意:平面内nnn个点,其中任意两点所在的直线上都不包含原点。求一种集合的个数:(P1,P2)(P3,P4)...(P2k−1,P2k)(P_1,P_2)(P_3,P_4)...(P_{2k-1},P_{2k})(P1,P2)(P3,P4)...(P2k−1,P2k)使得:1.不存在i!=j,Pi=Pji != j , P_i=P_ji!=j,Pi=Pj.2.不存在一...原创 2019-10-28 19:29:46 · 250 阅读 · 0 评论 -
三维凸包 BZOJ 最佳包裹
模板题解增量法怎么这么强啊。扰动很重要,直接挂50分。判断可视边缘的方法很神奇,将每个三角面的三边顺方向打有向标记,那么只有一个方向有边的点对就是边缘点对,直接建面。总的面数是O(n)O(n)O(n),复杂度为O(n2)O(n^2)O(n2)可以用一个有理有据但是有点麻烦的优化:可以做到O(nlogn)O(n\log n)O(nlogn)AC Code\rm{AC \ ...原创 2019-10-16 21:07:59 · 296 阅读 · 0 评论 -
闵可夫斯基和(计算几何)
DALAO 博客(好像我转过他很多篇计算几何了)再来一道:CF1019E Raining season转载 2019-06-22 17:12:34 · 5063 阅读 · 0 评论 -
LOJ #2561. 「SDOI2018」物理实验(扫描线 + set)
题目先扫描线,答案只可能在线段端点处取到。然后就是求第一个被当前点射中的线段。这个可以旋转坐标轴然后像做平面图的点定位那样做,用set来维护线段的远近。因为线段不交,所以两条线段的先后关系不会变化,可以直接玩set。...原创 2019-05-22 20:37:43 · 216 阅读 · 0 评论 -
POJ-2826 An Easy Problem?!(线段交点模板)
An Easy Problem?!Time Limit: 1000MS Memory Limit: 65536KTotal Submissions: 14877 Accepted: 2272DescriptionIt's raining outside. Farmer Johnson's bull Ben wants some rain to water his flowers. Ben nail...原创 2018-04-08 14:36:55 · 409 阅读 · 0 评论 -
半平面交
法一:暴力判断每个点是否被现在半平面割。但是在强制在线的时候也是唯一的方法了。Code:#include<cstdio>#include<cstring>#include<cmath>#include<cctype>#include<algorithm>using namespace std;int siz,cnt...原创 2018-04-09 12:19:59 · 388 阅读 · 0 评论 -
Codeforces 780 H Intranet of Buses
毒瘤出题人A了一道毒瘤题然后搬。。。。。。思路很简单,二分答案后two-pointers把每对边,相邻的鸽子会各自在其上的情况求距离小于二分的答案的时间区间,这是个二次函数直接求。然后发现判定答案就是找交集。转化为非法区间取并就可以排序贪心判定合法。这题让我深刻的理解到计算几何题好像是过了样例就能A,在打完后完全不相信自己能A的蒟蒻如是说。#include<bits/stdc++.h&...原创 2019-01-09 20:22:56 · 390 阅读 · 0 评论 -
SPOJ The area of the union of circles 自适应辛普森积分
题意:求多个圆形区域的并的面积。圆的数量n&lt;=1000n &lt;= 1000n<=1000我们设f(a)=(x=a这条直线在圆形区域内的长度)f(a)=(x=a这条直线在圆形区域内的长度)f(a)=(x=a这条直线在圆形区域内的长度), 那么答案就是∫f(x)dx\int f(x)\rm {d} x∫f(x)dx然后就可以直接用自适应辛普森积分来近似答案。eps=...原创 2019-02-13 15:52:18 · 134 阅读 · 0 评论 -
计算几何中的精度问题(转)(转)
好像他也是转的。。。。。转载 2019-03-07 10:27:05 · 165 阅读 · 0 评论 -
LG P3260 [JLOI2014]镜面通道
题目水能流过的地方,光就能穿过。逝者如流水,光阴如梭所以光线可以不用管,就是前面和后面联通就行,把所有相连的图形连inf的边,每个点拆成两个点,中间连1,最小割即为花费。(这个计算几何良心)AC Code:#include<bits/stdc++.h>#define maxn 705#define maxm maxn * maxn * 4#define eps 1...原创 2019-03-14 21:08:13 · 171 阅读 · 0 评论 -
BZOJ 1137: [POI2009]Wsp 岛屿(半平面交求周长)
题目因为可以在相交线段上换乘。所以容易想到答案就是包含1-n这条边的内部不包含边的凸包的周长。发现对于每个点,只有标号最大的邻接点有用。然后半平面交即可。再也不敢用map了,10610^6106直接卡到TLE,换了vector+sort直接B站第一页AC Code:#include<bits/stdc++.h>#define maxn 100005#define eps...原创 2019-04-01 09:44:19 · 156 阅读 · 0 评论 -
BZOJ 1038: [ZJOI2008]瞭望塔(半平面交)
题目对于每个坡,能看到它的范围为一个半平面,做半平面交得到一个下凸壳。发现答案一定在下凸壳的顶点或折线的顶点处取。AC Code:#include<bits/stdc++.h>#define maxn 1005#define eps 1e-8using namespace std;int n;struct Point{ double x,y; Point (do...原创 2019-04-01 10:40:19 · 172 阅读 · 0 评论 -
BZOJ 1845: [Cqoi2005] 三角形面积并(扫描线)
题目类似矩形面积并。把交点拿出来排序扫描线即可。AC Code:#include<bits/stdc++.h>#define maxn 105#define maxm 50005#define inf 2e9#define eps 1e-8using namespace std;int n;struct Point{ double x,y; Point(dou...原创 2019-04-01 11:39:55 · 151 阅读 · 0 评论 -
BZOJ 2458: [BeiJing2011]最小三角形(分治)
题目像平面最近点对那样分治,枚举点的时候大胆枚举,小心剪枝即可ACAC Code:#include<bits/stdc++.h>#define maxn 200005using namespace std;int n;int x[maxn],y[maxn],c[maxn];double sqr(double a){ return a*a; }double dist(...原创 2019-04-01 15:04:39 · 504 阅读 · 0 评论 -
BZOJ 4140: 共点圆加强版(圆的反演+二进制分组+半平面交)
题目首先圆不好处理,可以用一些骚操作:反演。几何上的(圆)反演是指确定一个反演中心OOO和反演半径rrr,那么对于一条以反演中心为端点的射线上的两点P1,P2P_1,P_2P1,P2并且OP1×OP2=r2OP_1 \times OP_2 = r^2OP1×OP2=r2,P1P_1P1是P2P_2P2的反演后的点,P2P_2P2是P1P_1P1的反演后的点。那么过反演中心的圆...原创 2019-04-01 17:26:20 · 214 阅读 · 0 评论 -
BZOJ 1027: [JSOI2007]合金(计算几何 + Floyd求最小有向正环)
题目发现满足前两维,第3维就一定满足。那么问题转化为求覆盖所有询问点的最小凸包。将所有询问点都在其左边的边的权值设为1.那么就是求一个最小环。可以用Floyd。**题目zz数据毁我青春,居然有所有的询问点都在同一点还和一个可提供点重的数据#include<bits/stdc++.h>#define maxn 505#define eps 1e-9using name...原创 2019-04-01 20:00:55 · 146 阅读 · 0 评论 -
BZOJ 1043: [HAOI2008]下落的圆盘(计算几何)
题目计算每个圆对另一个圆的覆盖弧度然后取并集就行了。求弧度用atan2+余弦定理。AC Code:#include<bits/stdc++.h>#define maxn 1005#define Pi 3.1415926535897932384626433832795#define inf 0x3f3f3f3fusing namespace std;double sqr...原创 2019-04-01 20:32:57 · 137 阅读 · 0 评论 -
BZOJ 4206: 最大团 (关于圆的funny solution)
计算几何题,要么全场AK,要么全场骗分,那是因为当几何中各种精巧的转化与OI多变的解题方法融合在一起时,答案总是和乱搞很难区分。这道题也算乱搞吧,这种题一般要枚举一个点,再继续分析,我们可以发现,做一个点关于圆的两条切线,在两条切线中间的点是不能选的。然后是我的乱搞:两条切线会将图分为3部分,一是枚举的点,二是切线左方的点,三是切线右方的点,然后我认为左方的点和左方的点不会排斥,那么左边和右边成一...原创 2018-03-08 16:48:33 · 182 阅读 · 0 评论