随笔分类 - 计算几何
摘要:枚举两点,算出圆心,枚举其他点...加个优化就2MS水过了.../********************* Template ************************/#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespa
阅读全文
摘要:计算几何实在是太繁杂了...搞了小半个暑假也没搞出什么成果也就切了点模板题...实在太弱...看了这篇以后感觉自己还是切的题太弱本文从爱酱巨巨(cxlove)那里转来的...也切了里面一小部分了...继续随机切吧...sad...以下是正文这两天在学习计算几何,随便说说自己的学习过程吧。 基本的叉积、点积和凸包等东西就不多说什么了,网上一搜一大堆,切一些题目基本熟悉了就差不多了。 一些基本的题目可以自己搜索,比如这个blog:http://blog.sina.com.cn/s/blog_49c5866c0100f3om.html 接下来,研究了半平面交,思想方法看07年朱泽园的国家队论文...
阅读全文
摘要:http://poj.org/problem?id=1474解法同POJ 1279 A一送一 缺点是还是O(n^2) ...nlogn的过几天补上.../********************* Template ************************/#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #incl
阅读全文
摘要:http://poj.org/problem?id=1279顺时针给你一个多边形...求能看到所有点的面积...用半平面对所有边取交即可,模版题这里的半平面交是O(n^2)的算法...比较逗比...暴力对每条线段做半平面交...要注意的地方写在注释里了...顺序写反了卡了我好久/********************* Template ************************/#include #include #include #include #include #include #include #include #include #include #include #incl
阅读全文
摘要:求点集中面积最大的三角形...显然这个三角形在凸包上...但是旋转卡壳一般都是一个点卡另一个点...这种要求三角形的情况就要枚举底边的两个点 卡另一个点了...随着底边点的递增, 最大点显然是在以l(i,j)为底边进行卡壳旋转但分析了一下这种卡壳的复杂度到了O(n^2) 感觉不太靠谱...不知道有没有更强的方法...我感觉两个点卡的时候都是凸函数...不是很好卡的样子...如果我想到了我再更新这贴.../********************* Template ************************/#include #include #include #include #inc
阅读全文
摘要:不知道谁转的计算几何题集里面有这个题...标题还写的是基本线段求交...结果题都没看就直接敲了个线段交...各种姿势WA一遍以后发现题意根本不是线段交而是直线交...白改了那个模板...乱发文的同学真是该死...浪费我几个小时的生命.../********************* Template ************************/#include #include #include #include #include #include #include #include #include #include #include #include #include #includ
阅读全文
摘要:水题直接码.../********************* Template ************************/#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;#define EPS ...
阅读全文
摘要:http://acm.sgu.ru/problem.php?contest=0&problem=253题意简单易懂...给你n个点的凸包(经测试已经是极角序)...判断m个点是否在凸包内...数量>=k就输出YES46ms过的...貌似数据很水...但暴力判断每个点复杂度O(n*m)肯定T了...二分可以优化到O(mlogn) -----该算法受到AC巨巨的启发:http://hi.baidu.com/aekdycoin/item/2d54f9c0fef55457ad00efd6把凸包分成n-2个三角形...然后二分点是否在这些三角形内即可...注意一下只有三个点的情况即可/**
阅读全文
摘要:http://poj.org/problem?id=1118直接枚举O(n^3) 1500ms能过...数据太水了...这个代码就不贴了...斜率排序O(n^2logn)是更好的做法...枚举斜率...直线方程相同的线段数量k...一定满足方程 n(n-1)/2=k --------------- 还真是baka. 到2点才想出这个结论特判只有一个点,两个点的情况...500ms AC/********************* Template ************************/#include #include #include #include #include #inc
阅读全文
摘要:http://poj.org/problem?id=1265求凸多边形上,凸多边形内的整点个数 以及凸多边形的面积...pick 定理 : S = L/2 + N -1S为多边形的面积 , L为多边形上整点的个数 , N为多边形内整点的个数多边形上点的个数 对两个端点的横纵左边的绝对值做GCD就可以求得多边形面积对相邻两点用叉积/2 后相加就可求得/********************* Template ************************/#include #include #include #include #include #include #include #incl
阅读全文
摘要:http://poj.org/problem?id=2187旋转卡壳的思想并不难,你就想象是两个平行直线夹住凸包...求的就是夹住的两个对锺点...这题更容易了...求出所有对锺点以后直接一遍扫过去求最大点距就行了...用的是一个结论: s[i],s[i+1],s[q] 构成的三角形只要面积最大 和 就一定是对锺点对接下来根据观察...按逆时针枚举所有边的时候q的位置一定是逆时针移动...所以我们根据上一点q的位置逆时针枚举点即可...找凸包O(nlogn) , 第一遍找q O(n) , 之后旋转操作 O(n) , 总共的复杂度O(nlogn)提醒一下这题很坑...必须处理 只有2个点,共线,
阅读全文
摘要:http://poj.org/problem?id=1113不多说...凸包网上解法很多,这个是用graham的极角排序,也就是算导上的那个解法其实其他方法随便乱搞都行...我只是测一下模板...struct POINT{ double x,y; POINT(double _x = 0, double _y = 0):x(_x),y(_y){};};POINT p[MAXN],s[MAXN];double dist(POINT p1,POINT p2){ return(sqrt((p1.x-p2.x) * (p1.x-p2.x) + (p1.y-p2.y) * (p1.y-p...
阅读全文
摘要:http://poj.org/problem?id=2653http://acm.hdu.edu.cn/showproblem.php?pid=1147http://acm.hdu.edu.cn/showproblem.php?pid=1086一个模板过三水题测自己写的模板 但是因为队列q.size()动态更新了导致挂了一个下午...真是太傻逼模板写的很明白了...快速判断可要可不要 , 判断线段重合和覆盖的函数也可要可不要.../********************* Template ************************/#include #include #include
阅读全文
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4631题意: 在平面内依次加点,求每次加点后最近点对距离平方的和因为是找平面最近点对...所以加点以后这个最短距离一定是递减的...所以最后会形成这样一个函数图像所以我们只要从后往前依次删点即可...15秒惊险水过...不过我最小点对的木板肯定写挂了,卡时限的话估计过不了...请用G++交...C++会TLE...当然我也无法解释这个问题...估计是我傻逼/********************* Template ************************/#include #include #in
阅读全文
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1007上半年在人人上看到过这个题,当时就知道用分治但是没有仔细想...今年多校又出了这个...于是学习了一下平面内求最近点对的算法...算导上也给了详细的说明虽然一看就知道直接用分治O(nlogn)的算法 , 但是平面内最近点对的算法复杂度证明我看了一天也没有完全看明白...代码我已经做了一些优化...但肯定还能进一步优化..我是2s漂过的非常惭愧...(甚至优化以后时间还多了...不明白原因/********************* Template ************************/#i
阅读全文