ACM计算几何题目推荐(第二期)

之前写过一篇《POJ计算几何入门题目推荐》。本来是随意写写,想不到这篇文章成为了我 blog浏览量第二高的文章,还被许多ACMer转载到其他地方。最近估计ACM赛季又到了,不少热心的ACMER加我Q,询问我那篇文章的事情,希望我再给出一些题目。

本人已经退役了,本来不想再写一些关于ACM的东西了,以免因为自己水平有限,思想落后,误导他人。不过后来想到这个空间晾着也比较尴尬,让各位找新文章的 ACMER经常扑空我十分过意不去,所以整理了一下以前做过的计算几何题目,写第二份题目推荐。这只是推荐一下而已,不涉及太多具体如何解题的实现方法,希望大家发挥想象解题编码。如果有错,万望指出。

这次的题目不再局限于POJ了,因为自己去年周游了各个OJ,反而很少在POJ切题了。而且这次推荐的题目比上次难了,也复杂多了。现在看回自己第一次写的计算几何题目推荐,实在感到当时自己写得有点肤浅。其实对于一些大牛来说,这些题目也算不了什么。

下面的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,平面上有一堆点,叫你用一笔画把这些点连起来,连成一个闭合的简单多边形,线不允许出现相交。改造一下凸包算法即可。

当然,除了上述的题目外,还有许多比较精彩的计算几何题目等待大家发掘。


下面是zxy的题目,不知道有没有重复= =





三维凸包
poj 3528 2974
hdu 3662




//ECNU 1624 求交集多边形面积 求俩凸多边形面积。水题。可用半平面交,也可以自己YY做。
poj 1259 最大内部凸包
hdu 3644 多边形内能放进最大圆半径(可能是凹的,二分+判断)
//hdu 1086 
//hdu 3982 半平面交+求凸多边形和圆的面积交
//hdu 4063 注意判断线段是否被圆覆盖的方法,可以分为一小段一小段判断,也可以整体根据左圆右端点比右圆左端点靠右(靠下)判断
卡壳
hdu
//3629
fzu
//1973
UVA
//681  找凸包,水题
//634 判断点是否在多边形内
//11626 给你凸包的点(无序),按逆时针排序,内点排序即可
//109 同 POJ1264
//10002 求凸多边形的质心
//218 水题,求凸包的点还有输出总边长
//10173 旋转卡壳求凸包最小外接矩形
//11096 求凸包周长,水题
//10088 求多边形内点个数
//10065 多边形面积
//10652 凸包面积矩形面积
//361 凸包解在所有三角形内
//191 同poj1410
//478 判断点是否在圆,矩形,三角形内
//477 比478就少了个判断在三角形内
//476 就判断个在矩形内
//10078 判断多边形是否为凸包
//10060 给你一些钢板的形状(凸凹不限),还有厚度,给你圆井盖的半径和厚度,问你可以覆盖掉多少个井。
//190 POJ1329
//356 圆能覆盖的格子数和边界穿过的格子数
//10678 求椭圆面积
//10991 三角形面积-三个扇形面积即可
//143 求三角形整点个数,白皮书上的题
//10522 已知三角形的三高长,求面积
//11854 判断三角形是否为直角三角形
//10347 已知三角形三条中线长度求三角形面积
//11455 水题,判断三角形***********
//10577 同zoj1892
//10005 最小圆覆盖求半径
//11345 求多个矩形并
//10242 已知平行四边形三个点求另一个点。注意三点位置关系,样例都是连起来的,可能中间俩点不等。。
//11817 求大地坐标 球面距离还有直线距离之差
//10167 A B 要求是整数,直接枚举
//10897 给经纬度求 Great-Circle Distance 
//10316 求在哪个飞机场建造个HUB使得所有飞机场到这个HUB最长距离最短。
//10075 大地坐标转换求距离,然后floyd,注意求floyd之前的距离也要先四舍五入




ural




//ural 1020 周长+圆周长
//ural 1052 找最多点共线
//ural 1084 求固定半径的圆 和 固定长度矩形相交面积(圆和矩形同一个中心)
//ural 1207 把点分成相等的两部分 极角排序
//ural 1348 求点到直线最远最近点
//ural 1159 二分半径,注意所有点都在圆某条直径的特殊情况
//ural 1489 三维转二维,细节注意下就OK




ural 1572 给定一个形状的尺寸(圆,正方形,等边三角形),求能放进其他形状(输入)最多的个数




zoj
//1010  
//1032  
//1037   
//1041  
//1081   
//1090   
//1104  二分抛物线二次项系数即可
1123  
//1128 矩形面积并
//1139   
//1158 直接枚举围墙的中点,求与墙的最多交点个数即可。
1165   看不懂 
1185   
//1199   两圆公切线交点,根据等比关系
//1247 按给的方向走,输入稍微麻烦点
//1248 判断一个多边形是否有核,半平面交,判断交后多边形的点的个数是否为0。
//1280   
1289  
//1309 求点和圆的切线,然后排序验证是否和圆相交即可
1357  
1369  
//1377
1426   判断100条线段相交形成多少个矩形 
//1439   
//1450   最小圆覆盖,随机增量方法
//1453   
//1460   切蛋糕,问切成多少块,欧拉定理,注意输入数据很阴险,有重边,而且切痕端点不一定都在蛋糕边缘。。
//1465
//1469   求多边形核的面积,半平面交即可。
//1472   圆和矩形 圆和圆 矩形和矩形 是否相交 相切也算,注意题目输入T T
1491  
1550   面??
1580 1000个点 问你最多组成多少个直角三角形
//1597  
//1608   两个圆是否能放进一个矩形
//1648   
1650  给四条线段的长度,求围成最大区域面积
1662  
1683  
1696  N个圆 问最后能看到的能有几个
//1704  给你一些点,找到一个三角形的面积最大,而且其他点都不在这个三角形里面(上)
1739  求多边形覆盖掉的块块的面积
1821  
//1860 水题,比较长度。
//1868 大圆求距离最大值最小,枚举下就好
//1892 给你正多边形的三个点,求包围它的最小矩形面积(矩形长宽必须平行于x或y)
//1910
//1943 大地坐标求距离,用map很方便
//1973 给出多边形N个顶点,求出所有边的中点   
//1974  给出多边形N个中点,求出顶点。偶数边是不唯一的,题目给的奇数边
//1996
1999  
//2010   判断一个矩形是否可以放进另一个矩形里(可以斜放),离散化
//2015   求多边形重心
2062  给出N个点的多边形,求一射线使得和最多的边相交(射线不能在多边形内部)。
2102   给你一条棍子坐标和几个圆桌子的坐标,判断棍子是否能掉下来
//2107  
2137
//2157  给你多边形的几个点,求周长
//2167 求单位圆最多覆盖点数,求每个点形成的单位圆覆盖最多次数的弧即可   
2171 
2228  
2234  给出一个三角形区域和一根绳长,求绳长在三角形区域里围成的最大面积
2318  给出一艘圆形的船,问是否可以逃出很多圆构成的群岛
2335   画出三个圆,每个圆只能一次画成,求最少画的时间
//2347   给出1000个点,求这1000个点能组成多少个正方形
//2352   
2361   许多线构成闭合区域的面积(可能构成多块区域,输出每一块的面积)
//2370 给出弓形的弦长和弧长,求弓形的高  
2375  
2394  
//2403   可以找规律,可以模拟
//2419   给你5W个点,求三点能组成最大三角形的面积,旋转卡壳,引用大黄题解 O(n) 的旋转卡壳,先凸包,然后选取开头三个点 p,q,r 开始旋转,注意 r 不超过第一个点,q 不超过 r,p 不超过 q 。每次做三次推进,先推进 r,使 pq 不动面积最大,然后推进 q,再推进 p,如果三次都没有推进过,r 推进一格。每次推进完一个点都更新一下面积最大值。
2428   
//2459 给出四面体的六条楞,求体积,欧拉四面体公式   poj2208用这个公式死活过不了
2503   积分。。
2518     求椭圆柱侧面积最小面积读不懂
2519   
2525   
2556
//2551  
2568  
//2589 欧拉定理,求N个圆相交后的面数
2623   求两个多边形的并的面积,三角剖分?
2629   求最多覆盖多少个圆
2637  
2675  
2713  
2716   
2718   
//2747 求颜色不同的矩形覆盖后剩下多少种颜色的矩形,并且求出来面积。   
2748   
//2820   判断是否有核,半平面交
2825  
2854   
//2870 判断是否存在一条直线和所有线段有至少一个交点
2959   0AC的神题。。
//2978 同2167   
2983   
2993    
3012
//3521 扫描线+并查集








poj
1031 Fence
//1039 Pipe
1066
1092 Farmland
1106 Transmitters
1113 Wall
1118 Lining Up
1133 Stars
1151 Atlantis
1225 STRICTLY INSCRIBED SIMILAR TRIANGLES
1259 The Picnic
1263 Reflections
// 1264 凸包+判断点是否在多边形内+多边形面积
//1265 Area
1266 Cover an Arc.
1269 Intersecting Lines
//1271 Nice Milk 半平面交
1279 Art Gallery
1288
1294 Not Too Convex Hull
1319 Pipe Fitters
1329
1347 Triangle
1361 JaWs
1375 Intervals
//1379 Run Away
1380
1385
//1389 Area of Simple Polygons
1408 Fishnet
//1410 Intersection 线段和矩形相交,注意题意
//1418 Viva Confetti 求圆和圆相交的交点,然后计算交点在某个圆内,按极角排序在同一个圆周上的点(记得去重),然后计算每小段弧的中点,然后看这个中点在几个圆盘里,记录这个点和对应的id(可以记成一个点一个id)。最后扫一遍中点,未被遮住的就算到答案里。
另外需要特殊处理的就是,如果一个盘盘未被覆盖,就是它是完整的,或者它完全被覆盖,这样的话计算交点是算不出来的,需要特判。
1428 Hermes’ Colony
1434 Fill the Cisterns!
1444 Parallelepiped walk
1468
1471 Triangles
1473 There’s Treasure Everywhere!
1474
1494 Sunrise
1499 Supercomputer Selection, The Sequel
1500 Polygonal Puzzle
1514 Metal Cutting
1518 Problem Bee
1536 Trains
//1556 The Doors
1569 Myacm Triangles
1584 A Round Peg in a Ground Hole
1586 Three Sides Make a Triangle
1605 Horse Shoe Scoring
1610 Quad Trees
1623 Squadtrees
1624 This Takes the Cake
1645 BSP Trees
1654 Area
1660 Princess FroG
1673 EXOCENTER OF A TRIANGLE
1685 Color Tunnels
1687 Buggy Sat
1688 Dolphin Pool
1693 Counting Rectangles
1696 Space Ant
1727 Advanced Causal Measurements (ACM)
1758 Frontier
1765 November Rain
1774 Fold Paper Strips
1788
1803 Box Art
1810 Covering
1813 Overlapped Shapes
1819 Disks
1834 线段处理
1843 Shire
1851 Map
1871 Bullet Hole
1873 The Fortified Forest
1875 Robot
1877 Flooded!
1881 Sail Race
1899 Farmer Bill’s Problem
1902 Illumination
1905
1912 A highway and the seven dwarfs
1921 Paper Cut
1927 Area in Triangle
1931 Biometrics
1937 Balanced Food
1939 Diplomatic License
1940 Polygon Programming with Ease
1956 Pumps and Pipes
1971 Parallelogram Counting
1981 Circle and Points
1982 Water Tank
2002 
2007 Scrambled Polygon
2012 Triangle Cuts
2016 Ink Blots
2026 As the Crow Flies
2031 Building a Space Station
2036 I Conduit!
2043 Area of Polygons
2048 Monster Trap
2053 Square
2066 Minimax Triangulation
2069 Super Star 最小覆盖球
2074 Line of Sight
2079 Triangle
2087 Petanque
2098 Ellipse
2130 Jogging
2149 Inherit the Spheres
2150 Crossing Prisms
2164 Find the Border
2165 Gunman
2172 Bricks
2177 Ghost Busters
2187
2284 That Nice Euler Circuit
2318
//2354 大地坐标系求球面距离
2398
///2504 同zoj1892
//2546 求两圆相交面积
2606
2610
2621 Parallelepiped
2622 Convex hull
//2653
2686 Traveling by Stagecoach
2687 Earth Observation with a Mobile Robot Team
2747 Shy Polygons
2780
2839 Convex Hull and Triangle
2932 Coneology
2954 Triangle
3011 Secrets in Shadows
3129 How I Wonder What You Are!
//3130 How I Mathematician Wonder What You Are! 判断是否有核,半平面交
3135 Polygons on the Grid
3334 Connected Gheeves
//3335 Rotating Scoreboard 判断是否有核,半平面交
3347 Kadj Squares
3348
//3384 Feng Shui 半平面交
3407 Brookebond s’en va en guerre…
3410 Split convex polygon
//3058 求圆与环的相交面积
3597
//3608 Bridge Across Islands 求俩凸包最小距离,旋转卡壳

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值