随笔分类 -  数学——计算几何

摘要:hdu 1007 Quoit Design 最近点模板题目题意:给你n个点求平面上任意两点的最短距离思路:平面最近点对距离模板题,见算法导论P591#include #include #include #include #include #include #include #include #include #include #include #include #include #include #define CL(arr, val) memset(arr, val, sizeof(arr))#define lc l,m,rt> 1#define Min(x, y) (x) > 阅读全文
posted @ 2013-10-13 21:16 E_star 阅读(601) 评论(0) 推荐(0) 编辑
摘要:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3726题意:新白书p267, 有说给出三角形三点求外接圆,内接圆,给出一点求以及圆求过该点的切线, 给出一直线和一个点求过该点与直线想切的圆,圆半径给出。给出两条相交的直线求与这两条直线想切的圆, 给出两个相离的圆,求与这两个圆都想切的圆思路: 其实没什么很难的就是模板运用,还要注意细节什么的,这题考了很多二维几何的模板,值得一做,话说这是做ACM 题目以来写的最长的题目。细心。。 阅读全文
posted @ 2013-07-29 19:36 E_star 阅读(391) 评论(0) 推荐(0) 编辑
摘要:题意:见白书...思路:我们只要按照相对运动来处理就好了,不过这里一定要理解,相对运动是通过向量来解决的,如果单纯的依靠速度来决定他的走向的话,只有两条线段平行的时候才可以。然后就是模拟这个相对运动的过程,看谁先到达拐点然后处理。#include #include #include #include #include #include #include #include #include #include #include #include #include #include #define CL(arr, val) memset(arr, val, sizeof(arr))#defin... 阅读全文
posted @ 2013-07-20 19:49 E_star 阅读(402) 评论(0) 推荐(0) 编辑
摘要:题意:给你n个点第n个点保证与第0个点相交,然后求这n个点组成的图形可以把整个平面分成几个面思路:这里的解题关键是知道关于多面体的欧拉定理 多面体:设v为顶点数,e为棱数,f是面数,则v-e+f=2-2pp为欧拉示性数,例如p=0 的多面体叫第零类多面体p=1 的多面体叫第一类多面体这里满足的是零类多面体,我们只要求出该图形的 点v,边e即可。 怎么求点v呢? 两部分一部分是原来的n-1个顶点,然后是交出来的,我们只要判断线段相交求直线交点即可,然偶可能会摇头重复的交点去掉,求边的话我们只要求出一个规范相交的点肯定会增加一条边,枚举点然后判断 点是否在线段上(除了端点),然偶求解即可。#inc 阅读全文
posted @ 2013-07-13 17:19 E_star 阅读(307) 评论(0) 推荐(0) 编辑
摘要:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=9题意:Morlery定理是这样的:作三角形ABC每个内角的三等分线。相交成三角形DEF。则DEF为等边三角形,你的任务是给你A,B,C点坐标求D,E,F的坐标思路:根据对称性,我们只要求出一个点其他点一样:我们知道三点的左边即可求出每个夹角,假设求D,我们只要将向量BC旋转rad/3的到直线BD,然后旋转向量CB然后得到CD,然后就是求两直线的交点了。#include #include #include #include #include #inclu 阅读全文
posted @ 2013-07-13 15:17 E_star 阅读(384) 评论(2) 推荐(0) 编辑
摘要:const double eps = 1e-8;struct Point{ double x,y; Point(double tx = 0,double ty = 0) : x(tx),y(ty){}};typedef Point Vtor;//向量的加减乘除Vtor operator + (Vtor A,Vtor B) { return Vtor(A.x + B.x,A.y + B.y); }Vtor operator - (Point A,Point B) { return Vtor(A.x - B.x,A.y - B.y); }Vtor operator * (Vtor A,... 阅读全文
posted @ 2013-07-12 22:12 E_star 阅读(413) 评论(0) 推荐(0) 编辑
摘要:题意:给你5维的n个点的坐标,求其中两点之间曼哈顿距离最大。思路:多维曼哈顿距离的模板题目|x1-x'1|+|x2-x'2|+... ...+|xm-x'm| 去掉绝对值后x,x'分别都有2^m种状态,枚举每种状态下的最大值和最下值,然后找出差值最大的即可。#include <iostream>#include <cstdio>#include <cmath>#include <vector>#include <cstring>#include <algorithm>#include < 阅读全文
posted @ 2013-06-02 20:07 E_star 阅读(398) 评论(0) 推荐(0) 编辑
摘要:hdu 3634City Planning题意:给出n个矩形的左下角左边(x1,y1)以及右上角的坐标(x2,y2)以及每个矩形的单位面积所具有的的价值,求如何安排矩形的放置顺序是的总价值最大,输出总价值。思路:首先,这些矩形会有重叠的部分,重叠的部分肯定取val值最大的,所以我们首先按照每个矩形的val值排序,然后然后利用当前的矩形去切割前边切割出来的矩形,重叠部分肯定取当前的矩形的val计算,最后求切割出来的矩形的总价值即可。View Code #include <iostream>#include <cstdio>#include <cmath>#in 阅读全文
posted @ 2013-05-10 17:30 E_star 阅读(554) 评论(0) 推荐(0) 编辑
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4380http://acm.hdu.edu.cn/showproblem.php?pid=4353http://acm.hdu.edu.cn/showproblem.php?pid=4367昨天第9场比赛的第一题类型据说已经出成屎了,如果不是数据出错了,做就会被轮奸的。于是就坐了坐类似的题目。这里有一个同一的前提,不存在三点共线;首先给出这类题目的解法AC大神:http://hi.baidu.com/aekdycoin/item/3f151dafcfcfb9ac29ce9ddc还有一个帮助理解s[i][j]的 阅读全文
posted @ 2012-08-22 19:37 E_star 阅读(341) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=1113题意是给定一个城堡的各个点,然你求出设计一个城墙,包围这个城堡并且保证城墙距离城堡必须大于等于一个给定的距离:首先是利用图报求出最小的包围城堡的凸多边形,然后求出距离,然后再加上一个整圆就OK了,圆的半径就是给定的距离:(整个思路相当于把凸多边形各个边往外移动距离R,此后连接各边的弧组成一个以R为半径的整圆);到此终于把POJ计划的初级阶段刷完了...纪念一下。。#include <cstdio>#include <cstring>#include <iostream>#include <al 阅读全文
posted @ 2012-06-08 17:49 E_star 阅读(275) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=2187给定平面上的一群点求任意两点的最远距离,如果枚举任意两点的话复杂度为o(n^2),在这里肯定超时。可以利用凸包将点的范围缩小到凸包的顶点上再循环枚举任意两点,这里最坏情况也为O(n^2)。不过这里貌似可以过的。另一种方法就是旋转卡壳法了,意思就是寻找任意边的最远点(凸包上的顶点),然后计算该点到两端点的最远距离即可。旋转卡壳法 学习:http://www.cppblog.com/staryjy/archive/2009/11/19/101412.html#include <cstdio>#include <cstri 阅读全文
posted @ 2012-06-08 16:59 E_star 阅读(252) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=1584题意就是给顶一个多边形的n个点和一个钉子的半径与圆心左坐标:1:判断多边形是否为凸多边形; 2:判断圆心是否在多边形内;3:判断圆的半径是否小于圆心到多边形的最短距离:1:判断多边形是否为凸多边形,只要循环检查多边形任意三点形成的向量的叉积的方向相同即可,这里注意向量叉积方向的判断,右手螺旋定则;只要方向一致就可以了。2:这一步根据黑书上说的有两种方法:(1):环顾法,就是利用点集求角度,叉积求方向,然后求出角度后:angle = 0 表明在在多边形外; angle = pi ||-pi在多边行的边上;angle = 2.0*pi | 阅读全文
posted @ 2012-06-01 08:49 E_star 阅读(317) 评论(2) 推荐(0) 编辑
摘要:http://poj.org/problem?id=1408题意是给定一个1*1的方格,然后每个边有n个点,然后连线求交织出来的四边的最大面积。首先利用叉积求出所有的交点,(注意边界点单独处理),然后循环遍历所有的四边形求面积。取最大即可。#include <iostream>#include <cstdio>#include <cstring>#define maxn 33using namespace std;const double eps = 1e-8;double a[maxn],b[maxn],c[maxn],d[maxn];struct poi 阅读全文
posted @ 2012-05-25 16:38 E_star 阅读(359) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=1039黑书上的一道题目:题意:有一宽度为1的折线管道,上面顶点为(xi,yi),所对应的下面顶点为(xi,yi-1),假设管道都是不透明的,不反射的,光线从左边入口处的(x0,y0),(x,y0-1)之间射入,向四面八方传播,求解光线最远能传播到哪里(取x坐标)或者是否能穿透整个管道. 如果一根光线自始至终都未擦到任何顶点,那么它肯定不是最优的,因为可以通过平移来使之优化,如果只碰到一个顶点,那也不是最优的,可以通过旋转,使它碰到另一个顶点,并且更优,即最优光线一定擦到一个上顶点和一个下顶点. 这样枚举所有的上下两个转折点形成线段,然后从0 阅读全文
posted @ 2012-05-22 22:14 E_star 阅读(338) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=1654Area给定起点(0,0)然后给出1 - 4 | 6 - 9 表示走的方向,输入数据保证能够回到原点。很裸的叉积求多边形面积。这里精度控制很坑爹,只要出现小数就取整数+0.5,double不能控制,所以用long long或者__int64来控制。#include <cstdio>#include <cstring>#include <iostream>#define maxn 1000010struct point{ int x,y;}p[maxn];char str[maxn];int dir[ 阅读全文
posted @ 2012-05-22 19:08 E_star 阅读(360) 评论(0) 推荐(0) 编辑
摘要:Pick定理证明:http://translate.google.com/translate?u=http://episte.math.ntu.edu.tw/articles/sm/sm_25_10_1/page4.html&hl=zh-CN&ie=UTF8&sl=zh-TW&tl=zh-CNhttp://poj.org/problem?id=2954这个题意就是求网格内给定三角形三点,然后求他的内部点的个数; pick :s = in + on/2 -1 in内部点数 on外部边上的点数 s 多边形面积这里要求的是in,通常是先求出多边形面积,以及on的值,然 阅读全文
posted @ 2012-05-21 20:31 E_star 阅读(368) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示