
ACM_计算几何
文章平均质量分 71
9974
这个作者很懒,什么都没留下…
展开
-
SGU 124 判点在多边形内外边界
模板题。原理:先判点是不是在线段上。然后从这个点任意做一条射线,若与奇数条边相交,则该点在圆内,否则该点在圆外,注意遇到多边形的两条边的交点,算相交一次。我们可以定义线段为左闭右开区间,这样可以避免重复计算。这题比较特殊,dotOnSeg这个函数也特殊化了,不过point_in_polygon这个没有特殊化,只要改一下dotOnSeg就可以解决这类问题了。#include #原创 2013-04-05 13:40:46 · 1066 阅读 · 0 评论 -
HDU 4643 GSM 简单计算几何 (2013多校联合)
今天比赛的时候略坑, admin告诉我询问Q的个数不超过n^2, 赛后敲了个 O(Q*m^3)的复杂度,但这个复杂度常数比较低,可能在除以个小常数, 300ms过了,真心无语,数据应该水了吧,比赛的时候已经想到了,但怕超时没敢敲。这次的题解好坑, 说什么是要用什么图做,真心蛋疼,搞得这么高端干什么,看懂了它的思路,代码写起来不好写,至少我是这样的。我的做法:先预原创 2013-08-07 00:03:28 · 1899 阅读 · 0 评论 -
hdu 4629 计算几何 扫描线 (2013多校联合)
题意:给你n个三角形,可能三点共线,问覆盖1~n次的面积各是多少,n 思路: 把所有线段的端点和所有的交点都放到一个数组中,并从小到大排序,然后对于每个x都画一条从下往上的垂直线,我们枚举每两个相邻的x,单独计算它们之间的面积,这里我们从下往上扫过去。那么我们如何知道哪块面积计算了几次呢,我们用一个 ”度“ 来表示这块面积被覆盖了几次。以图中第二条和第三条竖线之间的面积原创 2013-08-15 10:23:14 · 1406 阅读 · 0 评论 -
hdu 4697 Convex hull 对移动的凸包积分 利用叉积的分配率 (2013多校联合)
题意:对移动的凸包积分, 给你点数n和时间T,0时刻的点为p,每个点的速度(用向量给出)为v,问你每单位时间的平均面积。思路:对于这类题目,应该很容易想到把时间分段分别求凸包。 1. 所以我们先求出所有时间点,即点集中有三点共线的时候,就是一个时间点。 对于i,j,k三个点共线,那么用叉积可以列出一个关于时间t的一元二次方程(可能a==0), 解出所有时间点即可。这里要原创 2013-08-28 13:24:34 · 1745 阅读 · 0 评论 -
hdu4766 network 圆与圆交 (2013网络赛)
分三种情况,多点优化就很快http://blog.youkuaiyun.com/yrleep/article/details/12144751#include #include #include #include using namespace std;const double eps = 1e-6;inline int dcmp(double x) { if (fabs(x)原创 2013-10-02 20:42:34 · 1187 阅读 · 0 评论 -
SGU 253 log(n)判点在凸包内 二分
我的做法相比其它人的有点搓.我用水平序做的,我的做法还要对点排序和求上下凸包,别人用极角序的,直接二分就可以了。还是写搓了,不想写极角序了。#include #include #include #include using namespace std;#define LL __int64int n, m, k;struct point { int x, y;原创 2013-05-07 18:57:18 · 1476 阅读 · 0 评论 -
hdu4092 计算几何趣味打表题
蛮有意思的打表题,看来暴力也是有很多可以学习的地方的http://www.aemiot.com/hdu-problem-4092.html原创 2013-10-05 19:34:28 · 1528 阅读 · 0 评论 -
【计算几何】面积类题目总结
http://xietutu.com/archives/722原创 2013-10-06 12:26:51 · 1164 阅读 · 0 评论 -
hdu 4097 简单计算几何
今天做了11年的上海区域赛, 比赛的时候贡献一道简单的几何,WA了2次才找到 漏了一个情况, 结果4WA后AC。题意:给你2个三角形和一个多边形(可能凹,可能退化成三角型,点按逆时针或顺时针给出)。比赛的时候少了"可能退化成三角型"的情况。发现问题后改了一会后AC。退化成三角型的处理方法:先去掉多边形中多余的那个点(共线的三个点的中间点)。然后把2个三角形拼接成一个原创 2013-10-05 18:58:43 · 1817 阅读 · 0 评论 -
Codeforces 70D 动态凸包 (极角排序 or 水平序)
题目链接:http://codeforces.com/problemset/problem/70/D本题关键:在log(n)的复杂度内判断点在凸包 或 把点插入凸包判断:平衡树log(n)内选出点所属于的区域插入:平衡树log(n)内选出点所属于的区域, 与做一般凸包的时候类似,分别以该点向左右两边进行维护,一直删除不满足凸包的点,直到所有点满足凸包为止。水平序:原创 2013-08-30 22:23:31 · 3423 阅读 · 2 评论 -
刘汝佳训练指南《几何问题》专题总结 BY 9974
总:4.3.4平面区域暂时还没学,三维的几何也只做了基本的,第6章的《几何专题》做了点题目但没总结,日后跟这个网站一起搞。注意:Y表示有代码保存,*表示好题code: https://github.com/9974/geometry/tree/master/Liu%20Rujia例题:UVA 11178 简单向量旋转和线段交LA 3263原创 2013-10-08 15:52:22 · 1883 阅读 · 0 评论 -
POJ 3528 三维凸包模板
#include #include #include #include using namespace std;const double eps = 1e-8;const int maxn = 505;struct Point { double x, y, z; Point(double x=0, double y=0, double z=0): x(x), y(y), z(原创 2013-10-26 12:51:51 · 1506 阅读 · 0 评论 -
hdu3692 三维计算几何,射线与平面交,点的旋转
1.点绕正轴(x,y,z轴)旋转整理成模板了,代码很短。2.射线和平面交,定义一个点乘运算符,写起来代码比较短,思路比较清楚。#include #include #include #include using namespace std;const double eps = 1e-8;struct Point { double x, y, z; Point(原创 2013-10-27 21:57:15 · 1331 阅读 · 0 评论 -
poj 3850 极角排序
题意:让你把n(n分析:先取极角大的,再取极角小的,假如有多个极角相同的点怎么办?那么我们假设最左下角的点为p0, 假如有L,R分别表示极角最小和最大的点与p0所连的直线,对于这两条直线上假如有多个点,那么L必须从距离p0近的点开始选,R必须从距离p0远的点开始选,其它的极角相同的一些点的取法 可以从近到远 或 从远到近都是无所谓的。#include #include原创 2013-10-17 20:29:48 · 1195 阅读 · 0 评论 -
UVA 12304 圆的各种模板混搭题(250行)
纯手敲,大概花了1小时不到,检查了一会,发现圆和直线交写搓了,改过来以后就AC了。题意:6种各自独立的询问。 询问1:给你一个三角形,求其外接圆圆心和半径。 询问2:给你一个三角形,求其内接圆圆心和半径 询问3:给你一个圆和一个点,求其所有切线的极角(规范0 询问4:给你一个点和一条直线和半径r,求所有满足半径为r且经过该点并与直线相切的原创 2013-09-26 21:41:32 · 1515 阅读 · 0 评论 -
POJ 1228 判断原始凸包是否唯一
题意:给出一个去掉几个点后的凸包,判断剩下的几个点组成的新凸包是不是原来的那个凸包。分析:只要 新凸包的每条边上有3个或3个以上的点时,凸包就是原来那个凸包,否则凸包不是原来那个凸包。 很好理解的,不是很难想到。View Code #include#includestring.h>#include#includeusing namespace std;#de原创 2013-08-29 10:35:06 · 796 阅读 · 0 评论 -
POJ 2187 Beauty Contest 旋转卡壳入门题
入门:http://blog.youkuaiyun.com/accry/article/details/6070626View Code #include#includestring.h>#includeusing namespace std;#define maxn 50005struct point{ int x, y;}p[maxn], res[ma原创 2013-08-29 10:35:53 · 807 阅读 · 0 评论 -
HDU 4637 Rain on your Fat brother 线段与半圆和线段交 简单题 (2013多校联合)
题意:应该不难读懂。做法:我们可以把雨滴看做静止不动,然后maze(这题的那个人)就是往左上方运动就可以了,计算出maze能跑到的最远的点,然后就是求起点和终点所构成的线段与每个雨滴交的时间,注意题目说每个雨滴可能会相交,所以我们对于每个雨滴算出相交的区间,然后对这些区间进行合并并且计算答案。注意点:1.maze有可能一开始就在雨滴里面。 2.原创 2013-08-05 14:06:32 · 1291 阅读 · 0 评论