计算几何
文章平均质量分 75
自在_飞花
这个作者很懒,什么都没留下…
展开
-
POJ 1265 Area Pick定理
S = a + b/2 - 1;#include #include #include #include #include #include #include using namespace std;struct P{ int x,y;} p[110];int gcd(int a,int b){ if(b == 0) return原创 2013-10-11 17:54:14 · 757 阅读 · 0 评论 -
POJ 3384 Feng Shui 凸包直径 + 半平面交
G++一直没有过了 换成 C++果断A掉了。。。原创 2013-11-18 21:44:28 · 1196 阅读 · 0 评论 -
HDU 1828 / POJ 1177 Picture 初涉扫描线
先贴个代码,题解明天补上,先去补读书笔记。。。#include #include #include #include #include #include #include #define LL long long#define Max(a,b) (a) > (b) ? (a) : (b)#define Min(a,b) (a) < (b) ? (a) : (b)#defi原创 2013-11-09 21:13:35 · 990 阅读 · 0 评论 -
CodeForces #1 C. Ancient Berland Circus
对于一个边数未知的正多边形,给出其上的三个点,求出其可能的最小的面积。首先对于正多边形其中心肯定是给出三角形的外形。然后对于三角形的三个角求最大公约数A。则 N = 2*Pi/A。剩下的就是计算面积了。做题的时候一直在纠结怎样求边数,然后发现double类型的也能求出最大公约数来。。。#include #include #include #include #原创 2013-11-25 20:49:21 · 1194 阅读 · 0 评论 -
POJ 3277 City Horizon 扫描线+离散化+线段树
题意的大体意思就是求N个矩形的面积并。可以算做是基础的模板题。第一次用线段树写扫描线,感觉还不是很难。对于扫描线,选择扫描的方式很重要,第一次写的是从左往右扫,不知道是不是因为某处想到不周到还是因为其他的原因,总之一直在TLE,后来换成从上往下扫,跑了250MS,而且思路也清晰了许多。#include #include #include #include #include #原创 2013-11-12 17:06:54 · 1276 阅读 · 0 评论 -
POJ 1039 Pipe 简单的叉乘
题意:给你一段弯弯曲曲的管子,问是否存在一条光线可以穿过整条管子,如果存在,则输出“Through all the pipe”,否则输出X轴正方向光线最远能到的X轴坐标。思路:如果存在这样一束光线,则此束光线必过管子的两个节点。如果不存在,最远的那一丝光线也必过管子的两个的节点,所以剩下的任务就是无厘头的枚举了。PS:我感觉我已经爱上熬夜了......#include #in原创 2013-11-12 01:03:31 · 931 阅读 · 0 评论 -
POJ 3227 Mountains 两线段交点模板
题意:两人登高望远,所能看到的山的长度。设两人所处位置为v,则有对于p[i],若其在射线vp[i-1]上方,则线段p[i]p[i-1]都能看见,若在下方或线上,则记录下当起点site = i-1;然后判断后面的点p[i]与射线vp[site]的位置关系。PS:貌似以前写的线段相交是错的,不知为啥还能A掉题。。。。。#include #include #include #i原创 2013-11-26 19:33:58 · 1062 阅读 · 0 评论 -
POJ 1066 两线段的规范相交
题意:现在有一个方框,有n条线段分割这个方框,线段的断点均在方框的边上,求从方框外面到方框内某一点所穿过的最少的线段数,过两线段交点记作一条。思路:两线段规范相交的模板题。#include #include #include #include #include #include #include #define LL long long#define PI (acos(-1原创 2013-11-26 20:04:01 · 991 阅读 · 0 评论 -
POJ 2280 Amphiphilic Carbon Molecules 极角排序 + 扫描线
从TLE的暴力枚举 到 13313MS的扫描线 再到 1297MS的简化后的扫描线,简直感觉要爽翻啦。然后满怀欣喜的去HDU交了一下,直接又回到了TLE.....泪流满面虽说HDU的时限是2000MS 可是数据也忒强了点吧,真心给HDU跪了。原创 2013-11-14 14:52:46 · 1734 阅读 · 0 评论 -
SDUT 2603 Rescue The Princess 13年山东省省赛签到题
题意:给出两个点,求出第三个点,使得其组成一个等边三角形,且点的顺序为逆时针。赤裸裸的水题,但是当时就是被这到水题虐的死去活来,虽然当时是旅游队,但也着实不爽。不知不觉,这一年只剩最后一个月,我也要去长春了,希望会有个好结果吧。一共就两行,虐自己以前不会的题,感觉还是比较爽的。#include #include #include #include #include #原创 2013-12-03 16:48:37 · 1284 阅读 · 3 评论 -
ZOJ 1450 Minimal Circle 点集的最小圆覆盖
给定一个点集,求出能覆盖点集内所有点的半径最小的圆。包含点在圆上的情况。个人感觉算是比较麻烦的计算几何模板了。在网上看了很多解题,大多数都摘抄自《求一个包含点集所有点的最小圆的算法》这篇论文。论文中提出的算法一共分一下四步:第 1 步. 在点集中任取 3 点 A , B , C . 第 2 步. 作一个包 含 A , B , C 三点的最小 圆. 圆周可 能通过这 3 点( 如原创 2013-12-02 17:01:32 · 5301 阅读 · 1 评论 -
POJ 3130 How I Mathematician Wonder What You Are! /POJ 3335 Rotating Scoreboard 初涉半平面交
题意:逆时针给出N个点,求这个多边形是否有核。思路:半平面交求多边形是否有核。模板题。定义:多边形核:多边形的核可以只是一个点,一条直线,但大多数情况下是一个区域(如果是一个区域则必为 )。核内的点与多边形所有顶点的连线均在多边形内部。半平面交:对于平面,任何直线都能将平面划分成两部分,即两个半平面。半平面交既是多个半平面的交集。定义如其名。半平面交求多边形的核。设多边形点原创 2013-11-18 19:52:13 · 1474 阅读 · 2 评论 -
HDU 1115 Lifting the Stone 多边形重心 模板体
#include #include #include #include #include #include #include using namespace std;struct P{ double x,y;};int main(){ int T,n; int i,j; P p1,p2,p3; double X,Y,S,x,y原创 2013-10-14 20:13:19 · 693 阅读 · 0 评论 -
POJ 2031 BUilding a Space Station 两点间距离 + 最小生成树
没有什么技术含量。套模板就好了。#include #include #include #include #include using namespace std;struct P{ double x,y,z,r;}p[110];struct E{ int u,v; double w;}edge[10010];double cal(P原创 2013-10-12 08:31:40 · 671 阅读 · 0 评论 -
HDU 1086 You can Solve a Geometry Problem too 两线段相交模板
#include #include #include #include #include #include #include using namespace std;struct L{ double x1,x2,y1,y2;};bool JudgeIntersetSegment(L l1,L l2){ if(l1.x1 == l2.x1 && l1.y原创 2013-10-14 18:59:55 · 732 阅读 · 0 评论 -
HDU 1140 War on weather
有一些卫星在天上,还有一些目标在地球表面,判断一下有多少目标会被卫星看见。设卫星为 S,目标为T,球心为O,过T做地球切线切点为A。一开始想判断∠STO是否 >= 90°,但是一直不对,可能是精度的问题。然后又用比较ST是否 总之这又是个比较简单的题。#include #include #include #include #include #include #i原创 2013-10-15 10:19:45 · 1000 阅读 · 0 评论 -
HDU 1392 Surround the Trees 构造凸包
又是一道模板题#include #include #include #include #include #include #include using namespace std;struct P{ int x,y; double angle;} p[50010];bool cmp(P p1,P p2){ return p1.angle原创 2013-10-15 17:49:46 · 863 阅读 · 0 评论 -
POJ 2187 Beauty Contest 构造凸包 + 旋转卡壳
在刷了一整版的 TLE 和 WA 外加一个CE和几个OLE之后终于拿到了第一个旋转卡壳的AC。。。泪奔http://blog.csdn.net/ACMaker/archive/2008/10/29/3176910.asphttp://cgm.cs.mcgill.ca/~orm/rotcal.frame.html历史:1978年, M.I. Shamo原创 2013-10-23 09:17:50 · 1095 阅读 · 0 评论 -
POJ 1408 Fishnet 两线段交点坐标
设线段v1v2,u1u2。t = (v2-v1)*(u1-v1)/(v2-v1)*(u2-u1); 即两个平行四边形的面积之比。交点坐标为p = {u1.x + (u2.x-u1.x)*t , u1.y + (u2.y-u.y)*t};前提是两线段相交。#include #include #include using namespace std;struct P原创 2013-10-28 11:24:49 · 899 阅读 · 0 评论 -
HDU 1174 爆头 两向量夹角
题目是中文的,就不再赘述了。其实方法比题意还简单。设警头心为O1,匪头心O2,警头心到匪头切点为D,枪方向向量为O1B;只要∠BO1O2 可能是后台比较水吧,对精度什么要求不太高。。总之又是一道水题。。。#include #include #include #include #include #include #include using namespace原创 2013-10-21 19:35:24 · 986 阅读 · 0 评论 -
HDU 1141 校庆神秘建筑 知六边长求四面体体积
欧拉四面体问题 Euler's Tetrahedron Problem 以六条棱表示四面体的体积. 涉及的知识点 知识点一: 矢量的数量积 知识点二: 矢量的向量积 用六条棱长表示的四面体体积公式 内容:将四面体放入直角坐标系内,利用矢量混合积的几何意义及坐标运算公式,结合矢量数量积的坐标运算公式、定义及余弦定理得到用六条棱长表示的四面体体积公式。公式: 欧拉四面体公式,用来求三棱椎的体积原创 2013-10-21 18:38:17 · 2246 阅读 · 0 评论 -
FZU 2127 养鸡场 线性规划?
题目链接:http://acm.fzu.edu.cn/problem.php?pid=2127由题意知,a1+a2+a3 = n && a1 设 a3 = tn ∈[x3, y3 > (n-1)/2 ? (n-1)/2 : a3 ],则对于每一个确定的tn,都有a1+a2 = n-tn.又因为取值都为整数,所以问题转化为直线a1+a2 = n - tn 在某一区域内整点坐标的个数。原创 2013-10-28 12:21:22 · 1143 阅读 · 0 评论 -
POJ 2462 / HDU 1154 Cutting a Polygon
就这样莫名其妙的过了,不过可以确定之前都是被精度卡死了。真心受不了精度问题了。题意:一条直线在一个不规则多边形内的长度,包括边重合部分。首先计算出所有交点,然后按想x,y的大小进行二级排序。然后判断相邻两点之间的线段是否在多边形内。设两点为a,b,其重点为c。若c在内部或边上,则线段ab必符合条件。判断点在多边形内的方法可以参考下面的链接:http://www.cnbl原创 2013-10-31 19:33:47 · 973 阅读 · 0 评论