计算几何
文章平均质量分 80
围巾的ACM
啊啊什么时候也能成为一个大牛啊
展开
-
POJ1269 Intersecting Lines(计算几何)
题解:简单计算几何,求两条线是否有交点输出交点坐标代码#include<stdio.h> #include<iostream> using namespace std;int main() { int n; double x1,y1,x2,y2,x3,y3,x4,y4; cin >> n; cout << "INTERSECTING LINES OUTPUT"<<en原创 2016-01-17 15:30:50 · 322 阅读 · 0 评论 -
Codeforces Round #365 (Div. 2) C. Chris and Road(计算几何+二分)
思路:比较显然的是有两种情况,一种是车还在x轴另一边的时候人就已经走过去了,一种是车完全过去了的时候人走到,那么第一种情况直接先判一下,第二种情况二分时间然后同样算一下就可以了 #include using namespace std; const int maxn = 10000+50; const double eps = 1e-9; int f(double x) { if(x>原创 2016-08-05 10:22:57 · 690 阅读 · 0 评论 -
hdu5733 tetrahedron(计算几何)
思路:百度一大堆公式...然后搞就好了...注意公式不要打错...叉积不要打错... #include using namespace std; struct point { double x,y,z; }p[5]; struct pingmian { double a,b,c,d; }pm[5]; double area[5]; int check(point p0,point p原创 2016-07-20 11:49:26 · 745 阅读 · 0 评论 -
HDU 4454 Stealing a Cake(暴力计算几何)
思路:直接枚举圆上的角度,然后算点到圆上一点距离和圆上一点到矩形最短距离就可以了... #include using namespace std; #define pi acos(-1.0) #define INF 0x7fffffff struct Point { double x,y; }; Point s,c,recta,rectb,t; double dist(Point a,原创 2016-07-24 01:11:33 · 455 阅读 · 0 评论 -
HDU 4458 Shoot the Airplane(计算几何or数学)
思路:固定飞机不动,那么相当于子弹多了一个水平速度-v,那么就可以将子弹的轨迹看作一条抛物线,枚举抛物线上的点然后判点是否在多边形内即可 #include using namespace std; const double PI=acos(-1.0); const double eps=1e-10; int dcmp(double x) { if(fabs(x)<eps)re原创 2016-07-23 21:07:10 · 590 阅读 · 0 评论 -
UVA10112 Myacm Triangles
思路:枚举一下就好啦 #include #include struct list { int x,y; }map[20]; double s_get(struct list a, struct list b,struct list c) { return fabs(0.5*((c.y-a.y)*(b.x-a.x)-(b.y-a.y)*(c.x-a.x))); }//得出三个点原创 2016-05-19 21:08:38 · 344 阅读 · 0 评论 -
UVa 10387 Billiard
思路:可以发现走过的总的水平距离为与垂直边碰撞的次数乘以水平边的长度,即:(a * m),同理总的垂直距离为(b * n)。所以,其弧度为 (a*m)/(b*n) 的反正切值,再转换为角度,总长度用勾股定理算出来再除以时间,就是速度。 #include #include #include using namespace std; double pi = 3.1415926; int ma原创 2016-05-19 21:07:26 · 634 阅读 · 0 评论 -
UVA375 Inscribed Circles and Isosceles Triangles
思路:简单几何题.... #include #include using namespace std; const double pi = atan(1.0) * 4; double b, h, l, th, r, k; int main() { int n; scanf("%d", &n); while (n--) { scanf("%lf%lf", &b, &h);原创 2016-05-19 21:05:35 · 286 阅读 · 0 评论 -
UVA579 ClockHands
思路:简单的求夹角。。 #include #include using namespace std; int main() { int h,m; while(scanf("%d:%d",&h,&m)!=EOF && h+m) { double min = m*6.0; double hour = h*30.0+0.5*m; double an = hour原创 2016-05-19 21:01:48 · 348 阅读 · 0 评论 -
UVA10250 The Other Two Trees
思路:一开始按照高中的思路做一直错,后来用的向量旋转做的,可百度 #include #include using namespace std; int main() { double x1,y1,x2,y2; while(scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2)!=EOF) { double x3=0,x4=0,y3=0,y4=0;原创 2016-05-19 21:00:18 · 299 阅读 · 0 评论 -
poj1971 Parallelogram Counting
题意:给n个点,问能组成四边形平行四边形的个数(有可能有三点共线) 思路:组成平行四边形的判定条件之中有一个是,对角线互相平分,即中点相同,所以直接n^2算出所有中点然后排序求就好了 #include using namespace std; const int maxn = 1005; struct Node { int x,y; }mid[maxn*maxn],nodes[ma原创 2016-04-23 22:58:04 · 573 阅读 · 0 评论 -
HDU 5120 Intersection(计算几何+容斥)
思路:直接容斥搞,然后就是两圆相交面积的模板题了 #include using namespace std; typedef long long LL; const int N=100010; const int INF=0x3f3f3f3f; int cas=1,T; #define PI acos(-1.0) double area(double x1, double y1,原创 2016-05-07 22:03:38 · 818 阅读 · 0 评论 -
FZU 2144 Shooting Game
思路:把球体方程和直线方程联立解出来交点的值作为区间,那么就变成最多区间覆盖的问题了 #include #include #include #include #include using namespace std; #define LL __int64 const int maxn = 1000005; struct Node { double s,t; }nodes[maxn];原创 2016-04-19 22:00:55 · 672 阅读 · 0 评论 -
FZU 2148 Moon Game
题意:给定n个点,问选4个点能组成凸四边形的个数 思路:凸包模板上 #include #include #include #include #include #include #include #include #include #include #include #include #define N 100000 #define LL long long #d原创 2016-04-19 21:52:32 · 846 阅读 · 0 评论 -
CodeForces 660D Number of Parallelograms
题意:平面给你n个点,问能够组成多少个平行四边形 思路:能组成平行四边形的两条对边的向量一定是相等的,直接n^2把所有向量算出来就做完了 #include using namespace std; #define LL long long const int maxn = 2005; map,int> ve; paira[maxn]; int main() { int n;原创 2016-04-18 23:44:46 · 294 阅读 · 0 评论 -
HDU 5130 Signal Interference(计算几何)
思路:把给出的公式化简...然后就会发现是个神奇的圆,然后就是多边形和圆的面积的并 #include #define eps 1e-8 using namespace std; #define N 100017 struct Point{ double x,y; Point(double x=0, double y=0):x(x),y(y) {} void in原创 2016-05-02 21:24:50 · 696 阅读 · 0 评论 -
CodeForces 659D Bicycle Race(叉积)
题意:一个图,给你一个多边形,然后有一个人在上面按照顺时针去走,问你有多少条线段,如果他一直走,就会走到这个多边形的内部去。 思路:这个人在顺时针走,如果连着的两条线段,是逆时针的,显然这个人就走到多边形内部去了,用叉积去判一判就好了。 #include #include #include #include #include #include #include #原创 2016-04-01 21:49:29 · 697 阅读 · 0 评论 -
2015’12杭电校赛1002 Polygon (计算几何)
题解:直接找一个求直线截多边形长度模板就可以A了,模板题代码 /****************************************************************** 题意: 多边形有n个顶点,输入m条直线,分别输出它们在多边形内的长度,边界也算 算法: 求出直线与多边形的所有交点, 排序后,判断每一段线段是否在多边形内(判断中点是否在多边形内),求和。 *******原创 2016-01-06 21:45:10 · 479 阅读 · 0 评论 -
2016年湖南省第十二届大学生计算机程序设计竞赛 J 三角形和矩形(计算几何)
思路:直接套多边形面积交模板就可以了,半平面交也是可以做的,不过要注意向量的方向 #include using namespace std; const int maxn=555; const int maxisn=10; const double eps=1e-8; const double pi=acos(-1.0); int dcmp(double x){ if(x>e原创 2016-09-03 21:53:22 · 1099 阅读 · 0 评论