计算几何
文章平均质量分 71
汤匙的匙不是钥匙的匙
怒当炮灰
展开
-
迷宫寻宝(二)(nyoj 83)
题目: #include struct node { double x, y; }; struct line { node p, q; }; int n; node tre;//宝藏位置 line s[40]; double det(double x1, double y1, double x2, double y2原创 2014-04-30 13:40:53 · 638 阅读 · 0 评论 -
三点顺序(nyoj 68)
下面来自:点击打开链接 利用矢量叉积判断是逆时针还是顺时针。 设A(x1,y1),B(x2,y2),C(x3,y3),则三角形两边的矢量分别是: AB=(x2-x1,y2-y1), AC=(x3-x1,y3-y1) 则AB和AC的叉积为:(2*2的行列式) |x2-x1, y2-y1| |x3-x1, y3-y1| 值为:(x2-x1)原创 2014-04-08 19:56:48 · 624 阅读 · 0 评论 -
Shape of HDU(hdu 2108)
一个判断凹凸多边形的题目。 利用叉积的公式: A(X1, Y1), B(X2, Y2), C(X3, Y2) AB * AC = (X2 - X1) * (Y3 - Y1) - (X3 - X1) * (Y2 - Y1) 如果 > 0 三点成逆时针 如果 = 0 三点在一条直线 如果 #include struct node { int x; int y; }n[110原创 2015-02-21 16:50:21 · 420 阅读 · 0 评论 -
多边形重心问题(nyoj 3)
题目传送门:点击打开链接 关于多边形面积和多边形重心的问题 我觉得点击打开链接讲的不错。 多边形面积:取多边形内的任意一点(也可以取原点),将此点与所有的顶点相连,将n顶点的多边形分成n个三角形,分别用叉积求每个三角形的面积 最后求和即多边形面积。 如果所选的点就是某一个顶点,那么就将n顶点的多边形分成n-2个三角形。 s = sum(point( i ) X point(i + 1) /原创 2015-03-02 16:35:04 · 708 阅读 · 0 评论 -
Wall(hdu 1348)
套用凸包的模板 要注意调用求叉积的函数multi时 所传参数的顺序……在这死了好一会…… #include #include #include #define pi atan(1.0) * 4 using namespace std; struct point { int x, y; }p[1100], stack[1100]; int top; double dis(point原创 2015-02-28 20:52:06 · 445 阅读 · 0 评论 -
Surround the Trees(hdu 1392)
依旧是凸包题 Graham 扫描法: 但是有一些细节要注意,就是输入数据只有一个点或者两个点的时候。 #include #include #include using namespace std; struct point { int x, y; }p[110], stack[110]; int top; double dis(point a, point b) { re原创 2015-03-02 10:39:23 · 471 阅读 · 0 评论 -
圈水池(nyoj 78)
圈水池 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述有一个牧场,牧场上有很多个供水装置,现在牧场的主人想要用篱笆把这些供水装置圈起来,以防止不是自己的牲畜来喝水,各个水池都标有各自的坐标,现在要你写一个程序利用最短的篱笆将这些供水装置圈起来!(篱笆足够多,并且长度可变) 输入第一行输入的是N,代表用N组测试数据(1 第二行输入的原创 2015-02-22 17:19:46 · 533 阅读 · 0 评论 -
Buried memory(hdu 3007)
题目链接:点击打开链接 最小圆覆盖问题,这个问题我看了好一整子…… 一组点的最小覆盖圆,应该有其中的两个点或者三个点在圆的边界上,其实两个点的情况就是两个点的连线是圆的直径。 如果是两个点的情况,那么圆心就是两点连线的中点。 如果是三个点的情况,那么圆心就是三个点所构成的三角形的外心,外心是三条边中垂线的交点。 具体的求法: 假设三个点(x1,y1),(x2,y2),(x3,y3)原创 2015-03-06 19:34:09 · 1116 阅读 · 0 评论