随笔分类 - ACM_计算几何
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4720 先两两点之间枚举,如果不能找的最小的圆,那么求外心即可。。 1 //STATUS:C++_AC_0MS_292KB 2 #include 3 #include 4 #include 5 //#include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 #include 15 #include 16...
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4717 每两个点之间的距离变化是一个单峰函数,因为每次求的值最大值,多个单峰函数的最值函数还是单峰的。。 1 //STATUS:C++_AC_515MS_256KB 2 #include 3 #include 4 #include 5 //#include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 #inc...
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1007 简单裸题,测测模板,G++速度快了不少,应该是编译的时候对比C++优化了不少。。 1 //STATUS:G++_AC_1703MS_5004KB 2 #include 3 #include 4 #include 5 //#include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 #include ...
阅读全文
摘要:题目链接:http://poj.org/problem?id=3714 分治算法修改该为两个点集的情况就可以了,加一个标记。。。 1 //STATUS:C++_AC_2094MS_4880KB 2 #include 3 #include 4 #include 5 //#include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 #include 15 #include 16 #include 17...
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4631 数据是随机的,没有极端数据,所以可以分段考虑,最小值是一个单调不增的函数,然后每次分治算平面最近点对就可以了。。。 1 //STATUS:G++_AC_10390MS_23804KB 2 #include 3 #include 4 #include 5 //#include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #inc...
阅读全文
摘要:题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3720 题意:在一个矩形区域投掷飞镖,每个整点有磁性,每个点的磁性是一样的,因此飞镖只会落在整点上,投到每个点的得分是:Ax+By。矩形区域里面有个多边形,如果飞镖投在多边形里面则得分,求最终的得分期望。 对于每个点,以它为中心的边长为1的正方形范围内,它都可以把飞镖吸引过来,则最后飞镖能得分的面积就是多边形内以及多边形上所有整点的正方形的面积并,然后期望公式E(X)=p*xi。。 1 //STATUS:C++_AC_900MS_188KB 2 #i...
阅读全文
摘要:题目链接:http://poj.org/problem?id=1981 容易想到直接枚举两个点,然后确定一个圆来枚举,算法复杂度O(n^3). 这题还有O(n^2*lg n)的算法。将每个点扩展为单位圆,依次枚举每个单位圆,枚举剩下的单位圆,如果有交点,每个圆产生两个交点,然后对产生的2n个交点极角排序,判断被覆盖最多的弧,被覆盖相当于这个弧上的点为圆心的圆可以覆盖到覆盖它的那些点,所以被覆盖最多的弧就是答案了。O(n^3): 1 //STATUS:C++_AC_4032MS_208KB 2 #include 3 #include 4 #include 5 //#inc...
阅读全文
摘要:题目链接:http://poj.org/problem?id=2684 属于比较水的计算几何题目,直接叉积判断即可。 1 //STATUS:C++_AC_0MS_192KB 2 #include<stdio.h> 3 #include<stdlib.h> 4 #include<string.h> 5 #include<math.h> 6 #include<iostream> 7 #include<string> 8 #include<algorithm> 9 #include<vector>10 #
阅读全文
摘要:题目链接:http://poj.org/problem?id=1584 首先判断是否为凸多边形,叉积判断即可,然后判断点是否在多边形内,先用叉积然后点到直线距离。 1 //STATUS:C++_AC_0MS_192KB 2 #include<stdio.h> 3 #include<stdlib.h> 4 #include<string.h> 5 #include<math.h> 6 #include<iostream> 7 #include<string> 8 #include<algorithm> 9 #in
阅读全文
摘要:题目链接:http://poj.org/problem?id=1408 比较简单的题目,只是处理上麻烦了一点。 1 //STATUS:C++_AC_32MS_208KB 2 #include<stdio.h> 3 #include<stdlib.h> 4 #include<string.h> 5 #include<math.h> 6 #include<iostream> 7 #include<string> 8 #include<algorithm> 9 #include<vector>10 #in
阅读全文
摘要:题目链接:http://poj.org/problem?id=1039 比较有意思的一道题目,用光线射入一个管道,文最多能射多远。在最优解中一定存在光线紧挨着管道弯折点的情况,题目数据比较小,因此我们可以枚举管道上的两点,然后求出这条光线能入射的最远距离。只要判断当前直线管道壁是否相交,这里可以判断直线是否与对应的两个弯折点相交,如果相交,则直线合法,反之亦然,这样做方便处理。 1 //STATUS:C++_AC_32MS_188KB 2 #include<stdio.h> 3 #include<stdlib.h> 4 #include<string.h>
阅读全文
摘要:题目链接:http://poj.org/problem?id=2031 很典型的最小生成树题目。 1 //STATUS:C++_AC_0MS_252KB 2 #include<stdio.h> 3 #include<stdlib.h> 4 #include<string.h> 5 #include<math.h> 6 #include<iostream> 7 #include<string> 8 #include<algorithm> 9 #include<vector>10 #include<
阅读全文