计算几何
文章平均质量分 92
Coco_T_
东南大学本科毕业生,浙江大学在读研究生
展开
-
R1前最后一次hu测
T1.xiz 分析: 题目描述不准确,不过样例很准确考虑记一个www数组,w[i]w[i]w[i]表示字符iii与上一个和ta相同的字符在字符串中的距离,如果没有则记为0 这样T的w[i]w[i]w[i]可以很容易的表示出来但有个问题,在SSS中www数组是随着匹配位置变化的 这题一般有两种做法,一种是用kmp匹配,一种是哈希网上dada的题解(果然是dada,看不大懂...原创 2018-04-02 14:55:44 · 289 阅读 · 0 评论 -
三维几何基础(3D?)
二维几何我们多少有了一点了解,今天又是周天,于是又开始知识普及了。。。 二维几何中的很多操作也都适合三维几何,比如点+向量=点,向量+向量=向量,等等struct node{ double x,y,z; node (double xx=0,double yy=0,double zz=0) { x=xx; y=yy; z=zz; }};...原创 2017-12-03 17:49:43 · 1872 阅读 · 0 评论 -
正月十一hu测 T2.阴影(计算几何【线面交点)
分析: 30%还是比较好搞的,用相似三角形把点投影到xoy平面上,二维凸包即可因为不会坐标系旋转,所以剩下的70%我用了一个三维凸包 先把点投射到地面上 用投影点和光源做一个三维凸包 S=3∗VhS=3∗VhS={3*V \over h} (h就是点光源到地面的距离)这里xue微说一下,三维投影时需要用到的:直线和平面的交点首先我们需要把面的方向确定 (根据右手定则...原创 2018-02-26 14:20:31 · 268 阅读 · 0 评论 -
bzoj4311 向量(线段树分治+凸包)
题目链接分析: 我们按照时间种一棵线段树 每一个向量出现在一段时间里,我们就可以区间添加这个向量 在每个线段树的每个结点中用当前有的向量维护一个上凸壳为什么要维护上凸壳呢? 题目要求最大点积 我们知道,点积的公式:x1x2+y1y2x1x2+y1y2x_1x_2+y_1y_2 已知x1,y1x1,y1x_1,y_1,上式就可以转化成一个类似线性规划的东西 显然最优解在凸包上...原创 2018-02-09 08:58:48 · 472 阅读 · 0 评论 -
bzoj2388 旅行规划(分块+凸包+三分)
题目链接分析: 路径权值实际上就是序列的前缀和 我一开始觉得可以直接用树状数组维护前缀和,每一个询问直接在序列上三分即可 但是正解远远没有这么简单这是一道比较难的题: 路径权值虽然是前缀和的形式,但是需要区间修改 (好像树状数组有区间修改区间查询的操作,但是不会啊。。。) 我们不好直接用简答数据结构维护,我们可以考虑将序列分块(有点像块状链表) 每一块内维护delta,k,s原创 2018-02-03 08:54:59 · 320 阅读 · 0 评论 -
poj1696 Space Ant(TuB)
DescriptionThe most exciting space discovery occurred at the end of the 20th century. In 1999, scientists traced down an ant-like creature in the planet Y1999 and called it M11. It has only one eye on...原创 2017-12-23 09:10:28 · 251 阅读 · 0 评论 -
bzoj2765 [JLOI2010]铁人双项比赛
题目大意: 铁人双项比赛由长跑和骑自行车组成。现在给定总赛程s,以及每个选手长跑和骑车的平均速度,请你求出对于某个指定的选手最有利的k和r。所谓最有利,是指选择了这个k和r后,该选手可以获得冠军,且领先第2名尽量地多。分析: 很早就知道这道题的解法是半平面交 实际上我们可以很容易的得到一个方程: 我们可以看作是以k为x轴,以t为y轴的一条直线 如果我们对于1..n-1这些直线求交点,那原创 2017-12-04 14:45:29 · 416 阅读 · 0 评论 -
LA 3263 - That Nice Euler Circles(直线相交以及交点)
简介:一笔画分割平面分析: 我们要是直接计算平面的个数就会很难受 这时候我们注意到了题目中有Euler这个字眼 这就提示我们要使用欧拉定理 欧拉定理: 设平面图的顶点数,边数和面数分别为V,E,F,则V+F-E=2这样我们只要求出顶点数和边数,就可以得到面数了:F=E-V+2 该平面的顶点由两部分组成:原先给出的点和直线之间的交点注意,由于可能出现三点共线,所以需要删除多余的点t原创 2017-10-16 19:01:08 · 295 阅读 · 0 评论 -
UVa11401 - Triangle Counting(计数问题)
简介: 1~n的数字,任选三个能组成三角形的方案数分析: 说到三角形,我们肯定想到的是 两边之和大于的三边,两边之差小于第三边设三条边为x,y,z,最长边为x,此时的三角形有c(x) 则有 x-y < z < x 根据这个不等式,我们可以枚举y,当y >= 2时,x就有可行解了 直到y=x-1的时候,有x-2个解 所以解的个数为:1+2+3+…+(x-3)+(x-2)=(x-1)*原创 2017-10-23 15:16:48 · 382 阅读 · 0 评论 -
三维凸包
和二维凸包类似,给定一堆三维空间中的点,包含ta们的最小凸多面体称为这些点的凸包三维凸包的求法很多:暴力法枚举三个点组成的有向三角形(实际上是一个半平面),判断是否所有点都在这个三角形的同侧 复杂度:O(n4)O(n4)O(n^4)卷包裹法该算法的思想是先找到一条肯定在凸包上的边PiPjPiPjP_iP_j, 想象一张纸紧贴这条边,向左旋转,直到碰到一个点PkPkP...原创 2018-02-22 21:25:21 · 8730 阅读 · 4 评论 -
hdu3662 3D Convex Hull(三维凸包【三维计算几何基本操作)
题目连接分析: 三维凸包模板瞧好了基本操作 三维和二维简直不是一个级别的。。。orz#include<bits/stdc++.h>using namespace std;const double eps=1e-8;const int N=503;struct node{ double x,y,z; node (double xx=0,do...原创 2018-02-23 21:16:48 · 1854 阅读 · 2 评论 -
UVALive4589 Asteroids(三维凸包【凸包重心)
题目连接题意:求两凸包重心的最短距离分析: 三维凸包模板很显然,最优放置方法就是贴住两个行星的某两个面,而最近距离为各自重心到这两个面的距离 换句话说,我们可以独立求出两颗星球的“重心到各面的最短距离”,再相加即可如何求重心呢? 因为行星是均匀的,可以先随便找一个点,连接该点和各个面,得到若干三棱锥 把每个三棱锥等价成一个质点,再求这些质点的重心 质点的重心是质点坐标按质...原创 2018-02-24 09:56:57 · 261 阅读 · 0 评论 -
bzoj3190 [JLOI2013]赛车(半平面交+单调栈)
题目链接分析: 在任一时刻ttt,赛车iii的位置为:gi+vitgi+vitg_i+v_it 我们可以得到若干形如上式的方程,对于每一辆赛车,询问是否存在一ttt使得gi+vitgi+vitg_i+v_it最大一次函数形式,如果我们把这些式子画到二维平面上,就得到若干直线 青色(淡蓝色,水蓝色,管你什么蓝色)的线标出来的就是获奖赛车 显然,我们只需要把这nnn条直线求一个半平...原创 2018-03-30 17:00:31 · 237 阅读 · 0 评论 -
hdu4573 Throw the Stones(动态三维凸包)
题目链接分析: 显然我们需要求出凸包 朴素的求法会在一开始读入所有点,并预处理使得前四个点不共面 然而这道题由于有输入顺序,我们只能在读入的时候暗箱操作 边读入边维护凸包 (dalao说这就是动态凸包)每加入一个石子 若在凸包里,体积增量为 0, 若在外面我们可以发现,算法维护凸包删面的过程中,这个面和这个点构成的四面体就是体积增量的一部分, 所以我们只需要在删每个面的过程...原创 2018-02-25 21:02:35 · 414 阅读 · 0 评论 -
hdu3007 Buried memory(最小圆覆盖)
题目链接分析: 经典算法之最小圆覆盖tip就是练练手,感觉增量法挺神奇#include<bits/stdc++.h>#define LD long doubleusing namespace std;const double eps=1e-8;const double Pi=acos(-1.0);struct node{ double x,y;...原创 2018-02-24 20:01:20 · 327 阅读 · 0 评论 -
最小圆覆盖(经典算法【三点定圆)
刚刚学了一些基础的三维计算几何 接触到了增量法——一种看似暴力,实际睿智的算法 下面就是增量法在另一类问题上的展现算法原文问题描述 给定n个点,用一个最小的圆把这些点全部覆盖,求这个圆的圆心半径算法① 将所有点随机排布(这样可以保证算法的复杂度)② 初始随意找到两点,设为P1,P2P1,P2P_1,P_2,以P1P2P1P2P_1P_2为直径得到初始圆,设.........原创 2018-02-24 17:39:29 · 33548 阅读 · 16 评论 -
bzoj1337 最小圆覆盖
Description给出平面上N个点,N<=10^5.请求出一个半径最小的圆覆盖住所有的点 Input第一行给出数字N,现在N行,每行两个实数x,y表示其坐标.Output输出最小半径,输出保留三位小数. Sample Input4 1 0 0 1 0 -1 -1 0 Sample Output1.000 分析: 经典算法之最小圆覆盖#include<...原创 2018-02-24 19:04:03 · 240 阅读 · 0 评论 -
hdu4266 The Worm in the Apple(三维凸包)
题目链接分析: 求出凸包后,取询问点到各面的最短距离即可#include<bits/stdc++.h>using namespace std;const double eps=1e-8;const int N=1005;struct node{ double x,y,z; node (double xx=0,double yy=0,double ...原创 2018-02-24 15:01:40 · 232 阅读 · 0 评论 -
翔哥的hu测 T2. 数学作业(计算几何||hash+manacher)
版权属于ZYXZYXZYX,想要引用此题(包括题面)的朋友请联系博主 题目来源:[POI 2007] Axes of Symmetry 原题提交地址分析: 可能是数据较弱 所以用计算几何A掉了 (然而翔哥把我的程序放到原题网站上,一样A掉了。。。果然我是打暴力的料)方法一对于多边形的对称轴,我们要分类讨论:n为偶数 点与点之间的连线形成的对称轴: 我们枚举...原创 2018-03-10 18:54:21 · 299 阅读 · 0 评论 -
hdu4273 Rescue(三维凸包)
题目连接分析: 三维凸包重心到表面的最短距离求出凸包重心后,O(n)求出重心到凸包各面的距离,取最小值即可一开始不大理解:向凸包上一面做垂线,垂足可能不在这个面上,怎么破? 实际上,如果出现这样的状况,那么这个面上的垂线一定不是最优解 #include<bits/stdc++.h>using namespace std;const int N=110;c...原创 2018-02-24 11:18:01 · 212 阅读 · 0 评论 -
UVa10084 - Hotter Colder(半平面交【难码)
题目链接分析: 这是一个游戏,游戏规则是这样的: 甲闭上眼睛,乙在一个多边形的屋子里藏一个物品 睁开眼睛后,甲可以猜这个物体在哪里。第一次必须猜(0,0),之后每猜一次,乙根据这个位置和上一个位置哪里离正确位置近作出回答 如果新猜的点比较近,回答“Hotter” 如果之前的点比较近,回答“Colder” 如果二者相同,回答“Same” 求所有可能位置占得面积分析: 实际上,每一次乙回原创 2017-10-22 19:33:38 · 311 阅读 · 0 评论 -
UVa11178 - Morley's Theorem(向量旋转+直线交点)
题目链接简介:三角形内角三等分线相交形成等边三角形分析:向量旋转和直线交点的练习tip新操作的第一次练习,板子不要写错#include#include#include#includeusing namespace std;struct node{ double x,y; node (double xx=0,double yy=0)原创 2017-10-16 15:42:07 · 218 阅读 · 0 评论 -
UVa10652 - Board Wrapping(凸包+S+向量旋转)
题目链接简介:凸包分析:简介就已经邪泄露了正解tip这道题求坐标是一个难点 有一个很好的方法 我们知道点+向量=点 所以我们可以先算出中点到达每块木板的四个点的方向向量,点的坐标直接用中点坐标加上方向向量即可a=-torad(j); //变成弧度制 node o=node(x,y);原创 2017-10-16 20:51:35 · 257 阅读 · 0 评论 -
poj1279Art Gallery
DescriptionThe art galleries of the new and very futuristic building of the Center for Balkan Cooperation have the form of polygons (not necessarily convex). When a big exhibition is organized, watchin原创 2017-08-01 16:34:06 · 335 阅读 · 0 评论 -
poj3525(二分+半平面判定)
DescriptionThe main land of Japan called Honshu is an island surrounded by the sea. In such an island, it is natural to ask a question: “Where is the most distant point from the sea?” The answer to thi原创 2017-05-31 19:09:34 · 945 阅读 · 0 评论 -
poj3335(半平面交)
DescriptionThis year, ACM/ICPC World finals will be held in a hall in form of a simple polygon. The coaches and spectators are seated along the edges of the polygon. We want to place a rotating scorebo原创 2017-05-31 19:03:37 · 644 阅读 · 0 评论 -
poj1474(半平面交)
DescriptionA friend of yours has taken the job of security officer at the Star-Buy Company, a famous depart- ment store. One of his tasks is to install a video surveillance system to guarantee the secu原创 2017-05-31 19:01:37 · 392 阅读 · 0 评论 -
计算几何经典操作
不完整代码O(∩_∩)O~这里写代码片#include<cstdio>#include<iostream>#include<cstring>#include<cmath>using namespace std;const double eps=1e-8;const int N=10000;struct node{ //为了方便,通常将向量设成结构体 double x,y;原创 2017-04-22 18:27:42 · 361 阅读 · 0 评论 -
poj1113/hdu1348(凸包。。。两个网站上的输入输出有点出入)
WallOnce upon a time there was a greedy King who ordered his chief Architect to build a wall around the King’s castle. The King was so greedy, that he would not listen to his Architect’s proposals to b原创 2017-04-26 19:03:11 · 289 阅读 · 0 评论 -
poj3348 Cow
Your friend to the south is interested in building fences and turning plowshares into swords. In order to help with his overseas adventure, they are forced to save money on buying fence posts by using原创 2017-04-23 19:31:26 · 325 阅读 · 0 评论 -
poj3608Bridge Across Islands(旋转卡壳)
DescriptionThousands of thousands years ago there was a small kingdom located in the middle of the Pacific Ocean. The territory of the kingdom consists two separated islands. Due to the impact of the o原创 2017-08-16 15:08:27 · 1311 阅读 · 1 评论 -
bzoj1069 [SCOI2007]最大土地面积
Description 在某块平面土地上有N个点,你可以选择其中的任意四个点,将这片土地围起来,当然,你希望这四个点围成 的多边形面积最大。Input 第1行一个正整数N,接下来N行,每行2个数x,y,表示该点的横坐标和纵坐标。Output 最大的多边形面积,答案精确到小数点后3位。Sample Input 5 0 0 1 0 1 1 0 1 0.5 0.5Sampl原创 2017-08-16 18:46:54 · 260 阅读 · 0 评论 -
poj3384Feng Shui
DescriptionFeng shui is the ancient Chinese practice of placement and arrangement of space to achieve harmony with the environment. George has recently got interested in it, and now wants to apply it t原创 2017-08-03 10:56:54 · 352 阅读 · 0 评论 -
UVa11168 - Airport(凸包+点到直线的距离)
题目链接简介: 找到一条直线,使得所有点在直线的同侧,且到直线的距离之和尽量小分析: 显然,所求直线不能穿过凸包,也不能与凸包相离, 所以只能与凸包上的边重合,因为凸包上最多有n条边,如果我们能在O(1)的时间内算出所有点到直线的距离之和,这个问题我们就可以在O(n)的时间内解决了首先我们明确,一个点到直线的距离怎么求用向量的方法 d=Cross(P-A,B-A)/Len(B-A) 这虽原创 2017-10-17 14:38:16 · 379 阅读 · 1 评论 -
UVa11437 - Triangle Fun(直线交点)
题目链接分析: 基本操作的训练//这里写代码片#include<cstdio>#include<cstring>#include<iostream>#include<cmath>#define LD doubleusing namespace std;const LD eps=1e-8;struct node{ LD x,y; node (LD xx=0,LD yy=0原创 2017-10-17 19:26:49 · 209 阅读 · 0 评论 -
UVa11800 - Determine the Shape(形状的判断)
题目链接分析: 我先进行了点的排序, 在画出了所有点的排列状况后,我用线段相交的判断把点换成了这样if (XiangJiao(A,B,C,D)) swap(B,C);if (XiangJiao(A,D,B,C)) swap(C,D);之后直接判断边和角的关系就好了:Square(正方形) 所有的边相等,所有的角相等(等于90°,Dot=0)Rectangle(矩形) 对边相等,所有的角原创 2017-10-17 20:46:07 · 302 阅读 · 0 评论 -
计算几何(具象的难题)
前言:每到周天,就比较怠惰,所以随便写点什么原创 2017-10-15 18:59:56 · 1330 阅读 · 0 评论 -
bzoj2618 [Cqoi2006]凸多边形(半平面+S)
Description逆时针给出n个凸多边形的顶点坐标,求它们交的面积。例如n=2时,两个凸多边形如下图: 则相交部分的面积为5.233。Input 第一行有一个整数n,表示凸多边形的个数,以下依次描述各个多边形。第i个多边形的第一行包含一个整数mi,表示多边形的边数,以下mi行每行两个整数,逆时针给出各个顶点的坐标。Output 输出文件仅包含一个实数,表示相交部分的面积,保留三原创 2017-09-11 19:28:20 · 236 阅读 · 0 评论 -
bzoj1038 [ZJOI2008]瞭望塔
Description 致力于建设全国示范和谐小村庄的H村村长dadzhi,决定在村中建立一个瞭望塔,以此加强村中的治安。我们 将H村抽象为一维的轮廓。如下图所示 我们可以用一条山的上方轮廓折线(x1, y1), (x2, y2), …. (xn, yn)来描 述H村的形状,这里x1 < x2 < …< xn。瞭望塔可以建造在[x1, xn]间的任意位置, 但必须满足从瞭望塔的顶端可 以看到原创 2017-09-06 20:03:17 · 306 阅读 · 0 评论 -
旋转卡壳(rotate吧)
旋转卡壳,我是不会纠结ta到底念什么的,ta应该有2^4种读法 -------------lrh原创 2017-08-16 07:58:37 · 1408 阅读 · 0 评论