计算几何
文章平均质量分 70
qq172108805
这个作者很懒,什么都没留下…
展开
-
poj 2318 TOYS--点在直线左侧还是右侧
/*poj 2318 TOYS简单的计算几何就是一个矩形的范围 被n条线段分成n+1个区域然后有m个点的坐标,他们归属于所在的区域然后输出各区域内点的个数就是算一下点是在线段左侧还是右侧用向量的叉积即可保证线段所在的向量的x>0那么 叉积>0 点在左侧 叉积<0 点在右侧二分求解即可*/#includestruct point{ int原创 2012-08-13 16:02:01 · 711 阅读 · 0 评论 -
poj 1474 Video Surveillance - 求多边形有没有核
/*poj 1474 Video Surveillance - 求多边形有没有核*/#include #includeconst double eps=1e-8;const int N=103;struct point{ double x,y;}dian[N];inline bool mo_ee(double x,double y){ double ret=x原创 2013-08-09 17:32:00 · 1009 阅读 · 0 评论 -
poj 3130 How I Mathematician Wonder What You Are! - 求多边形有没有核 - 模版
/*poj 3130 How I Mathematician Wonder What You Are! - 求多边形有没有核*/#include #includeconst double eps=1e-8;const int N=103;struct point{ double x,y;}dian[N];inline bool mo_ee(double x,dou原创 2013-08-09 11:25:43 · 1033 阅读 · 0 评论 -
poj 1279 Art Gallery - 求多边形核的面积
/*poj 1279 Art Gallery - 求多边形核的面积*/#include#include#include using namespace std; const double eps=1e-8;struct point { double x,y;}dian[20000+10];point jiao[203];struct line {原创 2013-08-09 19:07:41 · 1120 阅读 · 0 评论 -
poj 3525 Most Distant Point from the Sea - 求到海岸最远的点 - 半平面交
/*poj 3525 Most Distant Point from the Sea - 求到海岸最远的点 - 半平面交就是求多边形最大的内接圆的半径枚举半径将所有海岸沿法向量向里推进半径的距离,求按平面的交,若多边形还有核,则这个半径存在*/#include #include #include using namespace std; const原创 2013-08-10 20:33:44 · 1300 阅读 · 0 评论 -
poj 2540 Hotter Colder 切割多边形
/*poj 2540 Hotter Colder 切割多边形用两点的中垂线切割多边形,根据冷热来判断要哪一半然后输出面积*/#include #include const double eps=1e-8; const int N=200; struct point { double x,y; point(){} point(double原创 2013-08-09 20:04:13 · 1194 阅读 · 0 评论 -
poj 3384 Feng Shui - 多边形的边内退一段距离后求半平面交,然后求最远点对
/*poj 3384 Feng Shui - 多边形的边内退一段距离后求半平面交,然后求最远点对*/#include #include #include using namespace std; const double eps=1e-8; struct point { double x,y; point(){} point(do原创 2013-08-12 09:55:46 · 1096 阅读 · 0 评论 -
计算几何算法概览
一、引言 计算机的出现使得很多原本十分繁琐的工作得以大幅度简化,但是也有一些在人们直观看来很容易的问题却需要拿出一套并不简单的通用解决方案,比如几何问题。作为计算机科学的一个分支,计算几何主要研究解决几何问题的算法。在现代工程和数学领域,计算几何在图形学、机器人技术、超大规模集成电路设计和统计等诸多领域有着十分重要的应用。在本文中,我们将对计算几何常用的基本算法做一个全面的介绍,希望对您转载 2013-08-12 09:15:32 · 594 阅读 · 0 评论 -
计算几何题目推荐第二期
下面的OJ之中,CII是指ACM-ICPC Live Archive ,网址是:http://cii-judge.baylor.edu/其他OJ的地址大家都熟知了,因此不再提供。一。基础题目 1.1 有固定算法的题目A, 最近点对问题最近点对问题的算法基于扫描线算法。ZOJ 2107 Quoit Design 典型最近点对问题P转载 2013-08-12 09:17:24 · 741 阅读 · 0 评论 -
poj计算几何
计算几何是为Regional临时抱佛脚搞的。。还很菜。。大牛们多指教。。评述的话主要是自己以后找起题来方便。。大牛们忽略就好。。1031 求多边形累计偏转角。。抄啊抄。。1039 点积叉积应用。。自己的死活过不了。。计算几何啊。。。1066 方法是枚举目标点到边上每两点中点构成的线段,找与其他线段相交数最少的1106 判断半圆最多覆盖多少点1113转载 2013-08-16 15:33:41 · 820 阅读 · 0 评论 -
hdu 4741 Save Labman No.004 异面直线最短距离及对应的点
#include#includeconst double eps=1e-9;#define zero(x) (((x)>0?(x):-(x))<eps)int dbcmp(double a){ if(a>eps) return 1; else if(a<(-eps)) return -1; return 0;}struct point{ double原创 2013-10-02 10:00:42 · 1337 阅读 · 0 评论 -
codeforces 183 B Zoo--计算几何+枚举
/*题意:有n个望远镜,被放置在X轴1~n的位置上,现有m只鸟,望远镜可以以任何角度观察,能看到在那条直线上的所有鸟,问所有望远镜能看到的鸟的数量之和计算几何+暴力*/#include#includeint n,m;int num[1000010];struct line//边结构{ __int64 a,b,c;};struct point//点{ __int64原创 2012-08-01 14:53:09 · 2049 阅读 · 0 评论 -
hdu 4643 GSM 计算几何 - 点线关系
/*hdu 4643 GSM 计算几何 - 点线关系N个城市,任意两个城市之间都有沿他们之间直线的铁路M个基站问从城市A到城市B需要切换几次基站当从基站a切换到基站b时,切换的地点就是ab的中垂线与铁路的交点(记录由哪两个基站得到的交点,方便切换)处枚举任意两个基站与铁路的交点,按到城市A的距离排序求出在城市A时用的基站j,然后开始遍历交点,看从j可以切换到哪个基站(假设是原创 2013-08-07 11:36:08 · 7412 阅读 · 0 评论 -
poj 3335 Rotating Scoreboard - 半平面交
/*poj 3335 Rotating Scoreboard - 半平面交点是顺时针给出的*/#include #includeconst double eps=1e-8;const int N=103;struct point{ double x,y;}dian[N];inline bool mo_ee(double x,double y){ double原创 2013-08-08 10:50:16 · 857 阅读 · 0 评论 -
POJ计算几何
计算几何题的特点与做题要领:1.大部分不会很难,少部分题目思路很巧妙2.做计算几何题目,模板很重要,模板必须高度可靠。3.要注意代码的组织,因为计算几何的题目很容易上两百行代码,里面大部分是模板。如果代码一片混乱,那么会严重影响做题正确率。4.注意精度控制。5.能用整数的地方尽量用整数,要想到扩大数据的方法(扩大一倍,或扩大sqrt2)。因为整数不用考虑浮点误差,而且运算比浮点转载 2013-08-09 12:15:13 · 674 阅读 · 0 评论 -
poj 2398 Toy Storage --基本上和poj 2318 一样
/*poj 2398 Toy Storage基本上和2318一样 但是要求输出 有t个玩具的区域的个数 t从小到大 需要注意的是 这次的挡板的顺序不是岸从左到右的顺序了,需要排序简单的计算几何就是一个矩形的范围 被n条线段分成n+1个区域然后有m个点的坐标,他们归属于所在的区域就是算一下点是在线段左侧还是右侧用向量的叉积即可保证线段所在的向量的x>原创 2012-08-13 16:38:41 · 400 阅读 · 0 评论 -
poj 1269 Intersecting Lines--直线相交
/*题意:判断直线与直线的关系 是一条直线输出LINE 平行不在一条直线上NONE 相交输出交点*/#includestruct point{ int x,y;};struct line{ point p1,p2; int a,b,c;};line ppline(point p1,point p2)//根据两点求直线{ line l; l.p1=p1; l.原创 2012-08-13 20:41:47 · 559 阅读 · 0 评论 -
poj 3304 Segments--直线和线段相交
/*题意:给一些线段 问你是否存在这样一条直线:所有这些线段在直线上的投影有公共点假设存在 那么过这个点,做这条直线的垂线,这条垂线过所有线段因为所有线段的投影都覆盖这点,因为他们的投影有这个公共点么所以就是找一条直线穿过所有线段所以枚举任意两个点组成的直线 看是否满足要求*/#include#includeconst double zero=1e-8;struct原创 2012-08-13 19:47:54 · 577 阅读 · 0 评论 -
poj 2007 Scrambled Polygon--按极角排序
/*给一个凸包,但是点序混乱,让你从(0,0)开始逆时针找到这个凸包就是按极角从小到大排序 是求凸包算法的一部分*/#include#includestruct point { int x,y;}dian[55];int n;int cross(point p,point s,point e){ return (e.x-s.x)*(p.y-s.y)-(p.x-s.x)原创 2012-08-15 15:38:26 · 452 阅读 · 0 评论 -
poj 1696 Space Ant--有关极角
/*题意:从最低的点开始,不能向右拐,问能经过多少点?能定是经过所有点了 从最低点开始,求与其极角最小的点,作为新的起点,在需找与这个点成极角最小的点,依次即可*/#include#includestruct point { int x,y,n;}dian[60];int n;int dis(point a,point b){return (a.x-b.x)*(a.x原创 2012-08-16 10:43:35 · 470 阅读 · 0 评论 -
poj 1113 Wall--凸包
/*题也没读,大致是这么个意思:给出若干个点,让建一个围墙,包含所有的点,且距所有点的距离不小于l。所以主要就是求凸包这里有一些讲解http://www.byywee.com/page/M0/S634/634173.htmlhttp://www.byywee.com/page/M0/S634/634180.htmlhttp://www.byywee.com/page/M0/S634原创 2012-08-15 15:04:35 · 428 阅读 · 0 评论 -
poj 2653 Pick-up sticks--线段相交--vector
/*题意:随即扔一些棒子,输出在最上面的棒子(没有那个棒子压着它)的编号线段相交问题本体用到了 vector 注意 v.erase(remove_if(v.begin(),v.end(),ok),v.end()); 用法同时 v.erase 返回的是删除过后,下一个元素的位置,不要再for里面用 it++ 在循环里面自己操作*/#include#inc原创 2012-08-14 16:24:35 · 463 阅读 · 0 评论 -
poj1873 The Fortified Forest 凸包+枚举 水题
/*poj1873 The Fortified Forest 凸包+枚举 水题用小树林的木头给小树林围一个围墙每棵树都有价值求消耗价值最低的做法,输出被砍伐的树的编号和剩余的木料若砍伐价值相同,则取砍伐数小的方案。*/#include#include#include #include using namespace std;const double eps = 1e-8;原创 2013-07-31 17:30:44 · 837 阅读 · 0 评论 -
poj3348 Cows 凸包+多边形面积 水题
/*poj3348 Cows 凸包+多边形面积 水题floor向下取整,返回的是double*/#include#include#include using namespace std;const double eps = 1e-8; struct point{ double x,y;};int n;point dian[10000+10],zhan[10000+1原创 2013-07-31 16:21:09 · 969 阅读 · 1 评论 -
hdu 4606 Occupy Cities - 计算几何 + 最短路 + 最小路径覆盖
/*hdu 4606 Occupy Cities题意:n个城市,m条障碍物,p个士兵,城市之间的路可以任意走,但是不能跨越障碍。 p个士兵分别按顺序占领城市,城市内有补给,士兵的消耗等于路程的长度。 问:为了完成任务,士兵的背包最小为多大?这是一个最小路径覆盖问题,每个士兵都可以走出一条线来。说道顺序,建图是只能从顺序靠前的城市向靠后的城市建边,这样就保证了单个士兵所走的城市复合顺原创 2013-07-26 21:22:55 · 919 阅读 · 1 评论 -
poj 1654 Area 多边形面积
/*poj 1654 Area 多边形面积题目意思很简单,但是1000000的point开不了*/#include#include#includeconst int N=1000000+10;const double eps=1e-8;struct point { double x,y; point(){} point(double a,double b):x(a),y原创 2013-08-02 17:27:01 · 715 阅读 · 0 评论 -
poj 2451 Uyuw's Concert - 半平面交
/*poj 2451 Uyuw's Concert - 半平面交很裸的半平面交*/#include#include#include using namespace std;const double eps=1e-10;struct point{ double x,y; point(){} point(double a,double b):x(a),y(b){}}原创 2013-08-05 19:45:29 · 1151 阅读 · 0 评论 -
ZOJ 3728 Collision 计算几何
/*ZOJ3728 Collision 计算几何这个计算几何不难,但是有两处没有考虑到1.没有注意速度的方向2.当时间为零的时候输出“0”,而不是“0.000”*/#include#includedouble eps=1e-10;int dbcmp(double a){ if(a>eps) return 1; else if(a<(-eps)) return -1; r原创 2013-11-27 18:34:29 · 1570 阅读 · 0 评论