//第一期



计算几何题的特点与做题要领:

1.大部分不会很难,少部分题目思路很巧妙

2.做计算几何题目,模板很重要,模板必须高度可靠。

3.要注意代码的组织,因为计算几何的题目很容易上两百行代码,里面大部分是模板。如果代码一片混乱,那么会严重影响做题正确率。

4.注意精度控制。

5.能用整数的地方尽量用整数,要想到扩大数据的方法(扩大一倍,或扩大sqrt2)。因为整数不用考虑浮点误差,而且运算比浮点快。



一。点,线,面,形基本关系,点积叉积的理解



POJ 2318 TOYS(推荐)

http://acm.pku.edu.cn/JudgeOnline/problem?id=2318

POJ 2398 Toy Storage(推荐)

http://acm.pku.edu.cn/JudgeOnline/problem?id=2398

一个矩形,有被若干直线分成N个格子,给出一个点的坐标,问你该点位于哪个点中。

知识点:其实就是点在凸四边形内的判断,若利用叉积的性质,可以二分求解。



POJ 3304 Segments

http://acm.pku.edu.cn/JudgeOnline/problem?id=3304

知识点:线段与直线相交,注意枚举时重合点的处理



POJ 1269 Intersecting Lines 

http://acm.pku.edu.cn/JudgeOnline/problem?id=1269

知识点:直线相交判断,求相交交点



POJ 1556 The Doors (推荐)

http://acm.pku.edu.cn/JudgeOnline/problem?id=1556

知识点:简单图论+简单计算几何,先求线段相交,然后再用Dij求最短路。



POJ 2653 Pick-up sticks 

http://acm.pku.edu.cn/JudgeOnline/problem?id=2653

知识点:还是线段相交判断



POJ 1066 Treasure Hunt 

http://acm.pku.edu.cn/JudgeOnline/problem?id=1066

知识点:线段相交判断,不过必须先理解“走最少的门”是怎么一回事。



POJ 1410 Intersection 

http://acm.pku.edu.cn/JudgeOnline/problem?id=1410

知识点:线段与矩形相交。正确理解题意中相交的定义。

详见:http://hi.baidu.com/novosbirsk/blog/item/68c682c67e8d1f1d9d163df0.html

POJ 1696 Space Ant (推荐)

http://acm.pku.edu.cn/JudgeOnline/problem?id=1696

德黑兰赛区的好题目。需要理解点积叉积的性质



POJ 3347 Kadj Squares 

http://acm.pku.edu.cn/JudgeOnline/problem?id=3347

本人的方法极度猥琐。复杂的线段相交问题。这个题目是计算几何的扩大数据运算的典型应用,扩大根号2倍之后就避免了小数。



POJ 2826 An Easy Problem?! (推荐)

http://acm.pku.edu.cn/JudgeOnline/problem?id=2826

问:两条直线组成一个图形,能容纳多少雨水。很不简单的Easy Problem,要考虑所有情况。你不看discuss看看能否AC。(本人基本不能)提示一下,水是从天空垂直落下的。



POJ 1039 Pipe 

http://acm.pku.edu.cn/JudgeOnline/problem?id=1039

又是线段与直线相交的判断,再加上枚举的思想即可。



POJ 3449 Geometric Shapes 

http://acm.pku.edu.cn/JudgeOnline/problem?id=3449

判断几何体是否相交,不过输入输出很恶心。

此外,还有一个知识点,就是给出一个正方形(边不与轴平行)的两个对角线上的顶点,需要你求出另外两个点。必须掌握其方法。



POJ 1584 A Round Peg in a Ground Hole 

http://acm.pku.edu.cn/JudgeOnline/problem?id=1584

知识点:点到直线距离,圆与多边形相交,多边形是否为凸



POJ 2074 Line of Sight (推荐)

http://acm.pku.edu.cn/JudgeOnline/problem?id=2074

与视线问题的解法,关键是求过两点的直线方程,以及直线与线段的交点。数据有一个trick,要小心。



二。凸包问题



POJ 1113 Wall 

http://acm.pku.edu.cn/JudgeOnline/problem?id=1113

知识点:赤裸裸的凸包问题,凸包周长加上圆周。



POJ 2007 Scrambled Polygon 

http://acm.pku.edu.cn/JudgeOnline/problem?id=2007

知识点:凸包,按极角序输出方案



POJ 1873 The Fortified Forest (推荐)

http://acm.pku.edu.cn/JudgeOnline/problem?id=1873

World Final的水题,先求凸包,然后再搜索。由于规模不大,可以使用位运算枚举。

详见:http://hi.baidu.com/novosbirsk/blog/item/333abd54c7f22c52574e0067.html



POJ 1228 Grandpa's Estate (推荐)

http://acm.pku.edu.cn/JudgeOnline/problem?id=1228

求凸包顶点数目,很多人求凸包的模板是会多出点的,虽然求面积时能得到正确答案,但是在这个题目就会出问题。此外,还要正确理解凸包的性质。



POJ 3348 Cows 

http://acm.pku.edu.cn/JudgeOnline/problem?id=3348

凸包面积计算



三。面积问题,公式问题



POJ 1654 Area 

http://acm.pku.edu.cn/JudgeOnline/problem?id=1654

知识点:利用有向面积(叉积)计算多边形面积



POJ 1265 Area 

http://acm.pku.edu.cn/JudgeOnline/problem?id=1265

POJ 2954 Triangle 

http://acm.pku.edu.cn/JudgeOnline/problem?id=2954

Pick公式的应用,多边形与整点的关系。(存在一个GCD的关系)



四。半平面交



半平面交的主要应用是判断多边形是否存在核,还可以解决一些与线性方程组可行区域相关的问题(就是高中时的那些)。



POJ 3335 Rotating Scoreboard

http://acm.pku.edu.cn/JudgeOnline/problem?id=3335

POJ 3130 How I Mathematician Wonder What You Are! 

http://acm.pku.edu.cn/JudgeOnline/problem?id=3130

POJ 1474 Video Surveillance

http://acm.pku.edu.cn/JudgeOnline/problem?id=1474

知识点:半平面交求多边形的核,存在性判断



POJ 1279 Art Gallery 

http://acm.pku.edu.cn/JudgeOnline/problem?id=1279

半平面交求多边形的核,求核的面积



POJ 3525 Most Distant Point from the Sea (推荐)

http://acm.pku.edu.cn/JudgeOnline/problem?id=3525

给出一个多边形,求里面的一个点,其距离离多边形的边界最远,也就是多边形中最大半径圆。

可以使用半平面交+二分法解。二分这个距离,边向内逼近,直到达到精度。



POJ 3384 Feng Shui (推荐)

http://acm.pku.edu.cn/JudgeOnline/problem?id=3384

半平面交实际应用,用两个圆覆盖一个多边形,问最多能覆盖多边形的面积。

解法:用半平面交将多边形的每条边一起向“内”推进R,得到新的多边形,然后求多边形的最远两点。



POJ 1755 Triathlon (推荐)

http://acm.pku.edu.cn/JudgeOnline/problem?id=1755

半平面交判断不等式是否有解。注意不等式在转化时正负号的选择,这直接影响到半平面交的方向。



POJ 2540 Hotter Colder 

http://acm.pku.edu.cn/JudgeOnline/problem?id=2540

半平面交求线性规划可行区域的面积。



POJ 2451 Uyuw's Concert

http://acm.pku.edu.cn/JudgeOnline/problem?id=2451

Zzy专为他那篇nlogn算法解决半平面交问题的论文而出的题目。



五。计算几何背景,实际上解题的关键是其他问题(数据结构、组合数学,或者是枚举思想)

若干道经典的离散化+扫描线的题目,ACM选手必做题目



POJ 1151 Atlantis (推荐)

http://acm.pku.edu.cn/JudgeOnline/problem?id=1151

POJ 1389 Area of Simple Polygons

http://acm.pku.edu.cn/JudgeOnline/problem?id=1389

矩形离散化,线段树处理,矩形面积求交



POJ 1177 Picture (推荐)

http://acm.pku.edu.cn/JudgeOnline/problem?id=1177

矩形离散化,线段树处理,矩形交的周长,这个题目的数据比较强。线段树必须高效。 



POJ 3565 Ants (推荐)

http://acm.pku.edu.cn/JudgeOnline/problem?id=3565

计算几何中的调整思想,有点像排序。要用到线段相交的判断。

详见:http://hi.baidu.com/novosbirsk/blog/item/fb668cf0f362bec47931aae2.html



POJ 3695 Rectangles    

http://acm.pku.edu.cn/JudgeOnline/problem?id=3695

又是矩形交的面积,但是由于是多次查询,而且矩形不多,使用组合数学中的容斥原理解决之最适合。线段树是通法,但是除了线段树,还有其他可行的方法。



POJ 2002 Squares    

http://acm.pku.edu.cn/JudgeOnline/problem?id=2002

枚举思想,求平面上若干个点最多能组成多少个正方形,点的Hash



POJ 1434 Fill the Cisterns!(推荐)

http://acm.pku.edu.cn/JudgeOnline/problem?id=1434

一开始发昏了,准备弄个线段树。其实只是个简单的二分。



六。随机算法

POJ 2420 A Star not a Tree? 

http://acm.pku.edu.cn/JudgeOnline/problem?id=2420

多边形的费马点。所谓费马点,就是多边形中一个点P,该点到其他点的距离之和最短。四边形以上的多边形没有公式求费马点,因此可以使用随机化变步长贪心法。

详见:http://hi.baidu.com/novosbirsk/blog/item/75983f138499f825dd54019b.html



七。解析几何

这种题目本人不擅长,所以做得不多,模板很重要。当然,熟练运用叉积、点积的性质还是很有用的。

POJ 1375 Intervals 

http://acm.pku.edu.cn/JudgeOnline/problem?id=1375

知识点:过圆外一点求与圆的切线



POJ 1329 Circle Through Three Points    

http://acm.pku.edu.cn/JudgeOnline/problem?id=1329

求三角形外接圆



POJ 2354 Titanic

http://acm.pku.edu.cn/JudgeOnline/problem?id=2354

求球面上两个点的距离,而且给的是地理经纬坐标。



POJ 1106 Transmitters

http://acm.pku.edu.cn/JudgeOnline/problem?id=1106

角度排序,知道斜率求角度,使用atan函数。



POJ 1673 EXOCENTER OF A TRIANGLE

http://acm.pku.edu.cn/JudgeOnline/problem?id=1673

可以转化为三角形的垂心问题。



八。旋转卡壳



POJ 2187 Beauty Contest 

http://acm.pku.edu.cn/JudgeOnline/problem?id=2187

凸包求最远点对。可以暴力枚举,也可以使用旋转卡壳。



POJ 3608 Bridge Across Islands(难)

http://acm.pku.edu.cn/JudgeOnline/problem?id=3608

两个凸包的最近距离。本人的卡壳始终WA。郁闷。



九。其他问题

POJ 1981 Circle and Points 

http://acm.pku.edu.cn/JudgeOnline/problem?id=1981

求单位圆最多能覆盖平面上多少个点

//第二期

下面的OJ之中,CII是指ACM-ICPC Live Archive ,网址是:

http://cii-judge.baylor.edu/



其他OJ的地址大家都熟知了,因此不再提供。



一。基础题目

1.1 有固定算法的题目



A, 最近点对问题

最近点对问题的算法基于扫描线算法。

ZOJ 2107 Quoit Design 典型最近点对问题

POJ 3714 Raid 变种最近点对问题



B,最小包围圆

最小包围圆的算法是一种增量算法,期望是O(n)。

ZOJ 1450 Minimal Circle 

HDU 3007 Buried memory 



C,旋转卡壳

POJ 3608 Bridge Across Islands 旋转卡壳解两凸包最小距离

POJ 2079 Triangle 旋转卡壳计算平面点集最大三角形



1.2 比较简单的题目

HDU 3264 Open-air shopping malls ,圆面积相交问题,如果用二分法做的话不难

CII 3000 Tree-Lined Streets,几何+贪心 

CII 4676 Geometry Problem,模板题 

HDU 3272 Mission Impossible,枚举+镜面反射思想

POJ 3334 Connected Gheeves,二分答案,面积判定

POJ 1819 Disks,模拟一下 

CII 3905 Meteor,貌似还是比较简单

ZOJ 2589 Circles,平面图的欧拉定理,圆的相交

POJ 2194 Stacking Cylinders,向量旋转





二。经典算法



2.1 三角剖分

三角剖分这个东西貌似去年流行了一下,高校联赛时某U连续出了两次。实际上对多边形进行三角剖分是一个很常见的算法思想,因为三角形是一个比较简单的凸多边形,可以对两个三角形比较容易地求公共面积,这也是三角剖分最常见的用途。对这个算法进行扩展,就可以求两个简单多边形的面积交了。主要是理解有向面积的概念。



第一类是圆与三角形的相交,主要做法是分情况讨论。

POJ 3675 Telescope 三角形剖分,圆与三角形的交

POJ 2986 A Triangle and a Circle 三角形剖分,圆与三角形的交

ZOJ 2675 Little Mammoth 三角形剖分,圆与三角形的交



第二类是多边形与多边形相交。

HDU 3060 Area2 简单多边形面积并,三角剖分



三角形剖分的另一种变种是梯形剖分,应用起来稍有局限性,但是比三角形剖分好写。

POJ 3148 ASCII Art 多边形梯形剖分,半平面交



多边形的重心问题,也是三角形剖分的应用:

CII 4426 Blast the Enemy!



2.2 极角排序

顾名思义,极角排序一般就是有一个圆心的问题,将平面上各个点按照与圆心极角进行排序。然后就可以在线性扫描之中解决一些统计问题。不过这类问题就稍稍超出计算几何范畴了。



UVA 11696 Beacons 颇为经典的极角排序的统计问题,记得darkgt大牛有一篇文章提到这个题目。

CII 4064 Magnetic Train Tracks,极角排序的统计问题,补集思想。

UVA 11704 Caper pizza

POJ 2280 Amphiphilic Carbon Molecules,极角排序相当巧妙地解决了这个问题。





2.3 扫描线算法

扫描线算法,需要使用到平衡树辅助,写起来比较复杂(对于本菜而言)。关于平衡树,我建议是直接使用STL的set或map。所以你需要掌握一些C++的知识,才能够看懂一份使用了map与set的代码。当年学习OI牛的代码我看得很纠结。不过只要理解了“事件点”这一个概念后就比较好办了。



HDU 3124 Moonmist 二分+扫描线。最近圆对,不存在改编最近点对的方法。不过当时数据弱,很多人乱搞过了

POJ 2927 Coneology 平衡树+扫描线,与上题类似。



下面两个题目都是关于多边形的扫描线算法,关于平面上许多凸多边形套了多少层的问题。

CII 4125 Painter ,这个是Final题,比较简单,是判断三角形嵌套层数的。

UVA 11759 IBM Fencing,上题是三角形,这题是多边形,稍稍难了一点。不过理解好扫描线算法的话应该没有问题。





2.4 其他题目

POJ 3528 Ultimate Weapon,模板化的三维凸包。知道几个三维有向体积的概念即可比较容易理解三维凸包的算法。三维凸包算法又是一种增量算法。





三。不确定算法/极值问题

POJ 3301 Texas Trip ,算是一种模拟退火求极值的问题,通过平面旋转找到最佳答案。

SPOJ 4409 Circle vs Triangle(AREA1),也是模拟退火

UVA 11562 Hard Evidence,应用三分极值法求极值。



四。传统几何、公式题

UVA有一个名叫Shahriar Manzoor喜欢出这些题目,喜欢这类题目的同志可以研究一本名叫《近代欧式几何学》的书。不过这些题目一般中学几何知识能够解决。

CII 4413 Triangle Hazard,梅涅劳斯定理,想不到SCNU校赛出到了

UVA 11524 InCricle,三角形内切圆性质联立海伦公式

CII 4714 In-circles Again,还是公式推导

POJ 2208 Pyramids,欧拉四面体公式



五。几何结合其他算法,麻烦题



HDU 2297 Run,百度杯的题目,利用到了zzy的半平面交的极角排序思想。

CII 4448 Conduit Packing,问一个大圆能否放下四个小圆。颇为变态的Final题,算法都很基础,就是二分一个答案,枚举两个已知圆,求与已知的两圆公切的第三个圆,枚举放置的位置……关键是不好想。

CII 4510 Slalom 几何+最短路

UVA 11422 Escaping from Fractal Bacterium ,麻烦题,主要还是向量旋转。

HDU 3228 Island Explorer,利用了最小生成树的性质。

CII 4499 Camera in the Museum,有关圆形处理的,很不错的题目。

CII 2395 Jacquard Circuits,Pick公式的应用

POJ 3747 Scout YYF II,又是一个几何问题,需要猜想一下。

POJ 3336 ACM Underground,几何预处理,并查集

CII 4428 Solar Eclipse,也是不错的题目,涉及圆的问题

CII 4206 Magic Rings,dancing links解重复覆盖问题,二分,百度杯也有个类似的题目。

POJ 1263 Reflections,与下面一个题目都是一类光线在球面上反射问题。解决方法是解析几何,参数方程,向量旋转等等。

CII 4161 Spherical Mirrors,上面题目的三维版本。

POJ 3521 Geometric Map,复杂的预处理,可以用于自虐

CII 3270 Simplified GSM Network 虽然有着V图的模型,但是规模小,所以无须出动V图算法,用半平面交即可。变态级的V图算法可以咨询三鲜教主。

CII 4617 Simple Polygon,平面上有一堆点,叫你用一笔画把这些点连起来,连成一个闭合的简单多边形,线不允许出现相交。改造一下凸包算法即可。

ACM计算几何题目推荐的更多相关文章

  1. ACM题目推荐(刘汝佳书上出现的一些题目)[非原创]

    原地址:http://blog.csdn.net/hncqp/article/details/1758337 推荐一些题目,希望对参与ICPC竞赛的同学有所帮助. POJ上一些题目在http://16 ...

  2. 数位DP入门详解+题目推荐

    \(update:2019-9-6\) 博客里某些东西没有解释清楚,完善了对应的解释 在开始之前,我们先来看一道题--题目链接 题目要求,相邻两位的差大于等于2,那么我们先来构造一个试一试. 比如说\ ...

  3. ACM 计算几何中的精度问题(转)

    http://www.cnblogs.com/acsmile/archive/2011/05/09/2040918.html 计算几何头疼的地方一般在于代码量大和精度问题,代码量问题只要平时注意积累模 ...

  4. ACM -二分图题目小结

    暂时只包括与最大匹配相关的问题. 求最大独立集,最小路径覆盖等等大多数题目都可以转化为求最大匹配用匈牙利算法解决. 1.最大匹配(边集) 此类问题最直接,直接用匈牙利算法即可. HDU 2063  过 ...

  5. 树形DP入门详解+题目推荐

    树形DP.这是个什么东西?为什么叫这个名字?跟其他DP有什么区别? 相信很多初学者在刚刚接触一种新思想的时候都会有这种问题. 没错,树形DP准确的说是一种DP的思想,将DP建立在树状结构的基础上. 既 ...

  6. 状压DP入门详解+题目推荐

    在动态规划的题型中,一般叫什么DP就是怎么DP,状压DP也不例外 所谓状态压缩,一般是通过用01串表示状态,充分利用二进制数的特性,简化计算难度.举个例子,在棋盘上摆放棋子的题目中,我们可以用1表示当 ...

  7. ACM - KMP题目小结 (更新中)

    KMP算法题型大致有两类,一类是next数组的应用,一类是匹配问题. next数组大多数是求字符串周期,或者是与前缀后缀有关,也可以应用在DP中.需要对next数组有一定理解才能做得出. next数组 ...

  8. ACM一些题目

    Low Power 先二分答案,可以通过调整证明同一台机器选的两个芯片必然是提供能量数值相邻的两个.所以再贪心一下就可以了. 时间复杂度\(O(n \log n)\). Factors 假设\(k\) ...

  9. 树形DP入门题目推荐以及解析

    关于树形DP几道入门题目 今天恶补树形DP,感觉海星. 其实挺简单的. 介绍几道例题,我会的. 1.洛谷P1352 没有上司的舞会 我的一篇题解 我们可以考虑每一个节点都是有两种情况. 一个是被邀请: ...

随机推荐

  1. Spring Task Scheduler - No qualifying bean of type [org.springframework.scheduling.TaskScheduler] is defined

    1. Overview In this article, we are discussing the Springorg.springframework.beans.factory.NoSuchBea ...

  2. 【转】Android下编译jni库的二种方法(含示例) -- 不错

    原文网址:http://blog.sina.com.cn/s/blog_3e3fcadd01011384.html 总结如下:两种方法是:1)使用Android源码中的Make系统2)使用NDK(从N ...

  3. ios sourecTree

    1, http://www.jianshu.com/p/be9f0484af9d 2, http://blog.csdn.net/viewcode/article/details/42291973  

  4. Impala 1、Impala理论

    1.Impala简介 • Cloudera公司推出,提供对HDFS.Hbase数据的高性能.低延迟的交互式SQL查询功能. • 基于Hive使用内存计算,兼顾数据仓库.具有实时.批处理.多并发等优点 ...

  5. C# 基础概念之延迟加载

    本文来自:http://kb.cnblogs.com/page/99182/ 作者: 杨延成  来源: 博客园  发布时间: 2011-05-01 15:06  阅读: 4662 次  推荐: 0   ...

  6. 总结一下用caffe跑图片数据的研究流程

    近期在用caffe玩一些数据集,这些数据集是从淘宝爬下来的图片.主要是想研究一下对女性衣服的分类. 以下是一些详细的操作流程,这里总结一下. 1 爬取数据.写爬虫从淘宝爬取自己须要的数据. 2 数据预 ...

  7. MyEclipse 注册码

    MyEclipse 注册码和大家共享一下! 一:MyEclipse_6.0.1GA_E3.3.1_FullStackInstaller注册码 Subscriber:javp Subscription ...

  8. PHP常用内置函数

    $_SERVER['SCRIPT_NAME'] 返回/mantis/test.php 相对路径 __FILE__返回文件的绝对路径 $_SERVER['HTTP_X_FORWARDED_PROTO'] ...

  9. 使用SOAPUI测试WEBAPI接口

    其实很简单,用起来也挺方便的. 首先,先去百度下SoapUI 下载,下载安装好后,打开软件. 1.新建一个项目 点击 Create Empty Project 按钮后,会自动新建一个项目,名字默认为: ...

  10. Mongoose的使用

    最近想做一个练手的App小项目.考虑到数据接口的问题,因为关系型数据库用的比较多,也有一定经验了,所以打算使用比较火的MongoDB作为数据库,下面就介绍一下Mongoose的使用方法吧. 概念:Mo ...