几何
文章平均质量分 57
s_h_r
这个作者很懒,什么都没留下…
展开
-
POJ 2002 Squares (Hash)
题意:给你二维平面点集 让你找出其中能组成多少个正方形 思路:对每一个点进行哈希 枚举两个点做为正方形的一条边 然后再求另外两个点 看看原点集中是否存在这两个点 由于枚举的是每条边 则一个正方形会被枚举四次 结果要除以四 #include #include using namespace std; #define REP( i, a, b ) for( int i = a; i < b;原创 2015-06-16 13:10:00 · 394 阅读 · 0 评论 -
ZOJ 3913 Bob wants to pour water 二分
题意:给你一个无限高的长方体,里面有一些小的长方体和圆球,他们互不相交,问你加入一定体积的水后,水面的高度。思路:二分水面高度,判断水的体积即可。这题我写的有点麻烦,减小了精度损失,而且别的地方也加了二分,但是貌似这题并不需要。。。#include <cstdio> #include <cstring> #include <algorithm> #include <cmath> #include <原创 2015-10-12 09:46:32 · 521 阅读 · 0 评论 -
ACM-ICPC国际大学生程序设计竞赛北京赛区(2015)网络赛 E题 hihoCoder 1231 Border Length
题意:给你一个多边形(可能为凹)和一个圆,求其公共部分的周长。思路:多边形和圆上会有很多交点,分别判断多边形和圆上相邻交点是否在另一个的内部,累加答案即可。这道题细节处理比较多,扒了各种模板拼凑起来了这题。。。又长又乱。。。#include <cstdio> #include <cstring> #include <algorithm> #include <cmath> #include <cstd原创 2015-09-21 10:36:12 · 2365 阅读 · 13 评论 -
BZOJ 1502 月下柠檬树 自适应辛普森积分
题意:给你一颗由n个圆台组成的柠檬树,再给你一个光线,问你这棵树的投影的面积。思路:由于光线是平行的,所以圆的投影还是原来的圆,样例的投影如下图: 其中DE,CF为原来圆台的母线,现在为两个圆的切线。最后无脑辛普森就好。。。具体的就是对于一个下标x,暴力找到x这个位置的所有圆和切线的最大值。#include <cstdio> #include <cstring> #include <algorit原创 2015-09-27 20:24:29 · 917 阅读 · 0 评论 -
HDU 4766 Network 圆的相关计算+思路
题意:给你一个点A和一个距离d 再给你n个点 问你是否存在一个点 在满足到所有n个点距离小于等于d前提下 到A的距离尽量短 思路:刚开始我的思路是一n个点为圆心 以d为半径 二分答案 再判断所有圆是否相交 算了下模板的复杂度是O(n*n*logn) 感觉可以 于是交了一发 T了 然后就没招了。。查看题解 思路是首先判断n个圆是否相交 如果相交则一定存在一个最短距离 最短距离是多少呢 分两种情况原创 2015-08-11 09:06:06 · 550 阅读 · 0 评论 -
POJ 3304 Segments 判断直线与线段相交
题意:给你一些线段 问你它们的投影有没有一部分可以重叠在一起 思路:投影重叠在一起 其实也就是是否存在一条直线 使得它与所有线段都相交 注意这里相交并不是单纯的规范相交 那么如何判断线段与直线非规范相交呢 我们找到直线上两个点a1 a2 对于一条线段b1 b2如果Cross(a2 - a1, b1 - a1) * Cross(a2 - a1, b2 - a1) 对于几何题 清晰的思路以及可读原创 2015-06-14 16:08:05 · 396 阅读 · 0 评论 -
POJ 2318 TOYS 叉积运算+二分
题意:给你一个矩形 再给你一些线段 将矩形分成若干部分 再给你一些点 让你判断这些点在哪个区域内 思路:假设i点在区域a内 那么点i一定位于区域a左边线的右侧且位于右边线的左侧 由于点和区间太多因此要二分判断点在哪个区间 这题代码写的有点乱...但是思路就是我上面所说的 还算比较清晰吧... #include #include #include #include #include原创 2015-06-11 17:08:46 · 406 阅读 · 0 评论 -
POJ 2079 Triangle 凸包+旋转卡壳
好久没写几何题了。。。 以前都是直接套模板 现在打算重新练练 理解其中的意思 不能一通乱套。。。 题意:给你一个二维点集 问你它们能够成的最大三角形面积 思路:这个题n = 50000 O(n^3)必T 不难证明最大三角形的点一定在凸包上 所以我们可以先求出凸包 但是极限情况下还是O(n^3)... 这时就用到给力的旋转卡(qia)壳了 首先我们枚举i 然后固定i的下一个点j 求第一个满足C原创 2015-06-09 22:37:10 · 523 阅读 · 0 评论 -
HDU 2438 Turn the corner 计算几何+三分
题意:给你一个直角弯 宽度分别为x y 再给你一辆汽车 长和宽分别为 l w 问你这辆车能不能转过这个直角弯 思路:汽车能不能转过弯 只需看会不会碰到内角即可 至于能不能碰到内角 我们以汽车左边线建立方程 判断即可 #include #include #include using namespace std; const double eps = 1e-8; const原创 2015-06-10 17:16:38 · 413 阅读 · 0 评论 -
HDU 4449 Building Design 三维凸包+空间坐标变换
题意:给你一个三维空间的一些点,让你求一个三维凸包,并且旋转这个凸包,使得一个面贴地,并且高度最高,高度相同的情况下,映射到地面的面积最小。思路:求一个三维凸包,然后枚举每一个面作为底面,然后套一个模板就可以求出旋转之后的各个点坐标。。然后在求二维凸包的面积。这个题不能直接用变换之后的坐标求高度,会有精度损失,直接在原坐标下求点到面的距离即可~WA了一天,最后发现是自己的二维凸包模板有问题!!f**原创 2015-10-28 11:42:29 · 831 阅读 · 0 评论