平面几何
morejarphone
这个作者很懒,什么都没留下…
展开
-
HDU5120(平面几何)
求两个圆环的相交面积。容易知道相交面积=两个大圆相交面积+两个小圆相交面积-2*大圆和小圆相交面积。#include#include#include#include#includeusing namespace std;double x1,ya,x2,y2;double dis;double s1,s2,s3;double R,r;double sov(double R原创 2015-10-07 19:29:01 · 461 阅读 · 0 评论 -
HDU 1086 (平面几何 线段求交)
题目链接:点击这里题意:求n条线段的所有交点个数. 题目保证线段不会有重合部分.直接求交点, 把所有的交点扔进一个集合统计一下就行了.#include <cstdio>#include <cmath>#include <algorithm>#include <iostream>#include <vector>#include <set>using namespace std;const原创 2016-06-22 00:18:05 · 283 阅读 · 0 评论 -
HDU 2036 (平面几何 多边形面积)
题目链接:点击这里直接分解成三角形加起来就好了, 检验一发板子.#include <cstdio>#include <cmath>#include <algorithm>#include <iostream>#include <vector>using namespace std;const double eps = 1e-8;const double INF = 1e20;const原创 2016-06-22 00:25:34 · 324 阅读 · 0 评论 -
HDU 2528 (平面几何 切割多边形 多边形的面积)
题目链接:点击这里直接求出总的面积和切割完一侧的面积就好了, 检验板子题.#include <cstdio>#include <cmath>#include <algorithm>#include <iostream>#include <vector>using namespace std;const double eps = 1e-8;const double INF = 1e20;原创 2016-06-22 00:35:00 · 530 阅读 · 0 评论 -
HDU 5230 (计算几何 圆和多边形面积交)
题目链接:点击这里题意:给出一个多边形区域, 给出两个点AA, BB, 某一个点距离BB的距离为dBd_B, 距离AA的距离为dAd_A, 如果k×dA≤dBk\times d_A \leq d_B 一个点是安全的. 求安全的面积.先假设两个点是(xA,yA)(x_A, y_A), (xB,yB)(x_B, y_B), 假设点(x,y)(x, y)是安全的, 那么满足d×(x−xA)2+(y−ya原创 2016-06-22 11:11:03 · 429 阅读 · 0 评论 -
POJ 1654 (平面几何 多边形面积 水~)
题目链接:点击这里题意:求多边形的面积.就输出处理一下就好了.#include <cstdio>#include <cmath>#include <algorithm>#include <iostream>#include <vector>#include <cstring>using namespace std;const int eps = 1e-8;const int INF =原创 2016-06-22 12:37:44 · 211 阅读 · 0 评论 -
POJ 1654 (平面几何 多边形面积 水~)
题目链接:点击这里题意:求多边形的面积.就输出处理一下就好了.#include <cstdio>#include <cmath>#include <algorithm>#include <iostream>#include <vector>#include <cstring>using namespace std;const int eps = 1e-8;const int INF =原创 2016-06-22 12:37:49 · 197 阅读 · 0 评论 -
HDU 3982 (半平面交 多边形和圆面积交)
题目链接:点击这里题意:一块圆形蛋糕, 上面有一个点是樱桃, 然后切n刀, 求樱桃所在的那一块面积占总面积的百分比。n刀每次取樱桃所在的半平面, 然后最外面加一个大矩形限制半平面交,最后求出的半平面交和圆面积并一下就是樱桃那块的面积了。#include <cstdio>#include <cmath>#include <algorithm>#include <iostream>#includ原创 2016-07-18 23:49:03 · 574 阅读 · 0 评论 -
HDU 1154 (平面几何 点在多边形内)
题目链接:点击这里题意:求一条直线在多边形内部的长度.找到所有的交点, 去重以后是直线上的一系列的点. 然后相邻两个点构成的线段如果是多边形内部的或者多边形上的那就加上这个长度. 判断相邻点构成的线段是不是需要加上只需要判断中点在不在多边形内部(边界)就好了.#include <cstdio>#include <cmath>#include <algorithm>#include <iostr原创 2016-06-22 22:12:30 · 466 阅读 · 1 评论 -
POJ 1556 (平面几何 最短路)
题目链接:点击这里题意:给出一个图, 求从起点走到终点的最短路.格子比较少, 直接把所有的格子坐标都扔进数组里然后暴力枚举两个点之间有没有线段挡着, 用距离建图跑最短路.#include <cstdio>#include <cmath>#include <algorithm>#include <iostream>#include <vector>#include <queue>#incl原创 2016-06-23 00:12:07 · 305 阅读 · 0 评论 -
HDU 3685 (凸包 重心)
题目链接:点击这里题意:给一个多边形(可能为凹),求有多少种稳定放置的方式。直接放置的边肯定是凸包边,然后判断中心是不是在凸包边端点的垂线上。#include <cstdio>#include <cmath>#include <algorithm>#include <iostream>#include <vector>using namespace std;#define maxn 10原创 2016-08-07 22:32:40 · 765 阅读 · 3 评论 -
HDU 3263 (平面几何)
题目链接:点击这里题意:一个多边形硬币和多边形小孔,能不能让硬币以某种姿势落下通过小孔。显然硬币是竖直落下最优,所以需要找到硬币投影线段的最短长度,如果数据比较大就要使用旋转卡壳,因为数据比较小所以直接求个凸包暴力扫描。然后需要找到小孔的最长的一条线段,这个线段肯定通过小孔的两个端点,所以直接暴力枚举小孔的两个端点,构成一条直线,求出这个直线和小孔所有的交点,然后给交点排个序,相邻交点间的线段判断一原创 2016-08-07 19:00:37 · 407 阅读 · 0 评论 -
HDU 5964 (平面几何)
题目链接:点击这里 trick:卡常熟卡的蛋疼~~#include <bits/stdc++.h>#define Clear(x,y) memset (x,y,sizeof(x))#define FOR(a,b,c) for (int a = b; a <= c; a++)#define REP(a,b,c) for (int a = b; a >= c; a--)#define fi f原创 2016-11-06 18:05:31 · 990 阅读 · 0 评论 -
UVA 12304 (平面几何)
题目链接:点击这里题意:紫书267页写的很详细.从未写过如此舒爽的大保健题目, 检验板子题.#include <cstdio>#include <cmath>#include <algorithm>#include <iostream>#include <vector>using namespace std;const double eps = 1e-8;const double INF原创 2016-06-21 21:36:37 · 309 阅读 · 0 评论 -
HDU 2892 (平面几何 圆和多边形面积交)
题目链接:点击这里堆板子题, 大致是拆成很多个三角形的有向面积来做.#include <cstdio>#include <cmath>#include <algorithm>#include <iostream>#include <vector>using namespace std;const double eps = 1e-8;const double INF = 1e20;con原创 2016-06-21 20:30:30 · 650 阅读 · 0 评论 -
HDU 1115 (平面几何 重心)
用重心公式 x0 = Σ(xi*mi)/m, y0 = Σ(yi*mi)/m,其中mi用有向三角形的面积表示,也就是叉积的一半。#include using namespace std;#define eps 1e-10#define maxn 1000500struct point { double x, y; point (double _x = 0,原创 2015-11-16 10:47:21 · 411 阅读 · 0 评论 -
POJ 2826 (计算几何)
堆坂子的题目。判断线段相交,共线视为不相交。求出交点,然后判断在上面的那条线段有没有覆盖住下面的那条线段。最后输出面积的时候小心输出-0.00的情况。#include #include #include #include #include using namespace std;typedef unsigned long long ll;#define maxn 11原创 2015-11-10 21:37:38 · 503 阅读 · 1 评论 -
HDU 1756 (计算几何 点在多边形内)
多边形可能是凹的所以不能用to_left_tset测试。直接用板子。#include using namespace std;typedef unsigned long long ll;#define maxn 111struct point { double x, y; point (double _x = 0, double _y = 0) : x(_x),原创 2015-11-10 17:18:11 · 839 阅读 · 0 评论 -
POJ2398(计算几何)
POJ2318的升级版,就是增加了边界的排序。#include #include #include #include #include using namespace std;#define maxn 5111#define x1 x_1#define x2 x_2#define y1 y_1#define y2 y_2#define find Findstruct原创 2015-10-30 20:54:20 · 409 阅读 · 0 评论 -
POJ2318(计算几何)
题意是给你n个边界和m个点,求出每一块区域里面点的个数。对于每一个点,算出每条边界在这个y坐标下对应的x坐标,二分查找就好了。#include #include #include #include #include using namespace std;#define maxn 5111#define x1 x_1#define x2 x_2#define y1 y_1原创 2015-10-30 19:55:43 · 292 阅读 · 0 评论 -
HDU5533(水几何~)
题意是给你n个点问是不是构成正n边形。n范围很小,直接暴力找最近的点。#include using namespace std;#define maxn 111#define INF 1e16#define eps 1e-10#define find Findstruct node { double x, y;}p[maxn];int n;int u, v;d原创 2015-11-02 00:05:28 · 486 阅读 · 0 评论 -
HDU 5531 (平面几何 三分)
题意是给你n个点,然后要求以每个点为圆心画一个圆,使得两两相邻的圆心的圆相切,不相邻的圆可以相交,如果可以作这样的圆那么输出圆面积和的最小值和,每个圆的半径,否则输出IMPOSSIBLE。首先我们求出每一条邻边的长度,记为l1, l2, l3, ... ,ln, 假定第一个圆的半径为x,那么我们可以用x表示所有圆的半径,分别为x, l1-x, l2-l1+x, l3-l2+l1-x ....原创 2015-11-19 20:56:19 · 743 阅读 · 0 评论 -
codeforce 659D (几何 水~)
D. Bicycle Racetime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputMaria participates in a bicycle race.The原创 2016-04-01 16:24:17 · 380 阅读 · 0 评论 -
HDU 4350 (生成树计数 判断点在线段上)
LightningTime Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1781 Accepted Submission(s): 607Problem DescriptionThere are N robot原创 2016-05-05 19:52:35 · 378 阅读 · 0 评论 -
UVALive 4650 (平面几何)
题意:给出n个点,每个点有点权,要画两个圆,每个圆圈中某些点(两个圆圈中的点不能相交),两个圆圈中的点求和再相乘求最大值。有个很关键的条件是三点不共线。相当于一条直线分成两堆点(两侧),使得两侧和的乘积最大。直接枚举两个点定下一条直线,那么直线上的两个点有四种情况,同侧两种异侧两种。#include #include #include #include #include原创 2016-06-02 20:41:43 · 266 阅读 · 0 评论 -
HDU 1147 (平面几何 dfs 并查集)
题目链接:点击这里题意:一次扔进去一堆线段, 输出最上面的线段.因为线段比较多, 但是最上面的线段不会超过10310^3, 所以可以从后面依次判断和前面的点是不是相交, 如果相交把这个点删掉, 删掉的同时要删掉这个点前面的和它相交的点, 所以递归删下去就好了. 删掉一个点可以用一个并查集简单的维护下, 并查集的根节点表示这个节点左边的第一个,没有被删除的节点.#include <cstdio>#i原创 2016-06-22 20:50:05 · 284 阅读 · 0 评论 -
HDU 5572 (平面几何)
题目链接:点击这里题意: 平面上一个圆, 两个圆外的点A,B, 给A一个初速度, 问能否碰到B.根据AA的运行射线轨迹分成两种情况: 1. 如果运行时不撞到圆, 那么判断BB在射线上即可; 2. 如果撞到圆, 求出比较近的那个交点PP, 求出AA关于OPOP的对称点A′A', 那么判断BB在线段APAP或者射线PA′PA'上即可.#include <cstdio>#include <cmath原创 2016-07-25 21:26:11 · 496 阅读 · 0 评论 -
POJ 3304 (计算几何)
题目链接:点击这里题意:给出n个线段,能否找到一个直线使得所有线段在直线上的投影至少有一个交点。可以转化为找到与n个线段都相交的直线,那么所有的直线就是与这条垂直的直线。所以直接枚举任意两个直线的任意两个端点。 trick:当两个点的距离小于精度时认为他们是同一个点直接跳过。#include <cstdio>#include <cmath>#include <algorithm>#inclu原创 2016-10-27 00:21:19 · 382 阅读 · 0 评论