![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
acm_计算几何
xrivendell7
永不放弃,永不停息
展开
-
POJ 1696 极角排序
题目中指定了ant爬行时的几种规则,从中我们可以知道ant是按照当前所处位置,对其他的plant进行极角排序后,选择角度最小过去,重复,一直到走到最后一个plant。 sort一发就可以了#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>const doubl原创 2016-09-13 15:58:31 · 272 阅读 · 0 评论 -
HDOJ 3264 Open-air shopping malls 计算几何 二分
计算几何的圆的模板题+二分判断题目中给了n个圆,要求:在这n个圆中取某个圆的圆心,然后找到最小的半径,使得这个新的圆与这n个圆的相交面积,会不小于这n个圆的面积的一半说起来,很绕口,但是因为n不大,是可以枚举的!对于每个圆心,我们都求一个最小的半径,然后n个值中间取最小的就是答案那么,如何求得这个最小呢?很简单,化计算性问题为判定性问题我们二分半径,然后验证这个半径会不会满足题中面积的条件代码如下:转载 2016-09-27 14:44:40 · 315 阅读 · 0 评论 -
POJ2187 Beauty Contest 水平序GrahamScan法
Beauty ContestTime Limit: 3000MS Memory Limit: 65536KTotal Submissions: 35550 Accepted: 11012DescriptionBessie, Farmer John's prize cow, has just won first place原创 2016-10-13 01:15:44 · 549 阅读 · 0 评论 -
POJ2318 叉积判断点与直线的关系
利用叉积判断点和直线的位置关系,确定点在直线的左侧还是右侧 通过查找比较点与各个直线(隔板)之间的关系,确定点所在的区间查找可以用一般方法,因为直线是有序的,但需要考虑0和n的特殊情况。#include <iostream>#include <cstdio>#include <algorithm>#include <cstdlib>#include <cstring>#define max原创 2016-08-28 23:32:55 · 823 阅读 · 0 评论 -
POJ 2398 排序+叉积判断点与直线位置关系+统计
题目与POJ2318基本一样 不同之处是需要对直线位置从左到右(按照平面直角坐标系的习惯)进行排序,最后对结果进行统计即可#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#define maxn 1000+10struct point{ int x,y;};struct Line原创 2016-08-28 23:36:54 · 499 阅读 · 0 评论 -
POJ 1269 判断直线的关系:相交,平行,重合
纯用模版即可#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>using namespace std;struct point{ double x,y; point(){} point(double _x,double _y) {原创 2016-08-30 22:34:59 · 471 阅读 · 0 评论 -
POJ 1410 线段相交模版
WA了好多次,有很多小陷阱,第一个是注意输入时的排序,第二注意线段在矩形内部的情况。 题目比较直接 模板抄错,wa了好多次,晕~~~#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>using namespace std;const double eps=1原创 2016-08-31 20:14:30 · 281 阅读 · 0 评论 -
UVA 5096 求两圆柱相交体积
我不知道什么牟合方盖,但是我学过高数. 这不是一道几何题,应该是一道高数微积分题目,考研的有兴趣可以做一做。所以,最后的程序就容易写出来了#include <iostream>#include <cstdio>#include <cmath>const double PI=acos(-1);using namespace std;int main(){ //freopen("in原创 2016-09-07 00:38:13 · 2107 阅读 · 0 评论 -
Light OJ 1239 计算凸包周长
看懂题目大意后,和POJ1113非常像,求一个凸包周长加上圆的周长 建立凸包,求周长,出结果即可,注意精度,不过用double比较保险#include <iostream>#include <cstdio>#include <cmath>#include <algorithm>using namespace std;const double eps=1e-10;const double原创 2016-09-18 01:04:51 · 310 阅读 · 0 评论 -
Light OJ 1203 凸包+寻找凸多边形最小角度
题目的意思不难理解,就是求凸包中最小角度 首先构造凸包,之后求最小的角度(<180) 注意有一个陷阱,当角度为180度时,假设图形中仅仅只有一个点,实际的角度应该是0度,这点需要特判. WA了一天才发现.#include <iostream>#include <cstdio>#include <cmath>#include <algorithm>const double PI=acos原创 2016-09-14 23:54:28 · 484 阅读 · 0 评论 -
POJ 1309 线段与直线相交+枚举
线段与直线相交时,端点重合情况需要考虑, 所以是不规范相交。 枚举时注意逻辑,不重不漏。 模版运用需要灵活.#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#define maxn 20+5const double eps=1e-8;int sgn(double x){ if(fabs原创 2016-09-03 12:38:27 · 350 阅读 · 0 评论 -
POJ 3304 直线与线段相交的判断
参考: http://blog.sina.com.cn/s/blog_6635898a0100n2lv.html 的证明过程 可将问题转化为是否存在一条直线经过所有的线段的判断问题#include<iostream>#include<cmath>#include<cstdio> using namespace std;const int MAX = 105;const double e转载 2016-08-31 20:47:30 · 293 阅读 · 0 评论 -
POJ 2074 直线相交
思路比较直接。 根据house的位置与每一个obstruction之间的相对位置,求出在line上不能够看到的区域Area的位置。 对所有的位置进行线性扫描,找出最长的通视距离,这个扫描过程需要细致。 最后还有几个致命的trick,自己动手吧,WA看dicuss中的测试数据.#include <iostream>#include <cstdio>#include <cmath>#incl原创 2016-09-08 14:56:24 · 347 阅读 · 0 评论 -
POJ 2007 极角排序
题目扯了那么多,又是算斜率, 又是不同象限的,最后就是一个极角排序 注意,这里的极角排序是一般grahm-scan算法的逆序即可#include <iostream>#include <cstdio>#include <cmath>#include <cstring>#include <algorithm>const int maxn=55;const double eps=1e-8;原创 2016-09-14 00:05:42 · 324 阅读 · 0 评论 -
POJ 1113 入门凸包
自己的第一法凸包 思路就是,建立凸包,求凸包周长加上圆的周长,主要练模版#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>const double eps=1e-8;const double PI=acos(-1);const int maxn=1000+原创 2016-09-14 00:09:03 · 458 阅读 · 0 评论 -
HDU3694 Fermat Point in Quadrangle 多边形费马点结论
HDU3694 前面说了一大推都没什么用,最后是求四边形的一个fermat点。 多边形的fermat点是欧拉平面上的一个点到多边形每个点的距离之和最小的点 四边形的fermat点在四个顶点与对角线交点值5个点中较小的那个,直接套模板计算取最小值即可 在判断多边形的对角线时小小用了一下极角排序 AC代码:#include <iostream>#include <cstdio>#inclu原创 2016-10-03 22:44:46 · 1155 阅读 · 0 评论