ACM计算几何题目推荐及做题统计
先前这个是放在首页的,现在结束了就把它挪到这里了,也算是对之前过程的一个留念吧。
今天发现自己计算几何的刷题量还是太少,所以决定将首页拿出来作为自己计算几何刷题进度的一个展示板,欢迎大家前来监督。
以下内容从各博客中复制过来,如果这道题目我刷过了,我会打上一个Accept,并把它的排版错位之类的问题整理一下。不能就让它这么放着呀。
所以说,页面越乱,证明我刷的题越少。
来自:计算几何题目分类+简单解释 - 小媛在努力~ - 博客频道 - CSDN.NET
两个斜杠是已经过的题,四个斜杠的是在ZOJ,POJ都有的题。
- 三维凸包 Acceptpoj 3528 Acceptpoj 2974
- hdu Accept//3629
- fzu //1973
- UVA
- //681 找凸包,水题
- //634 判断点是否在多边形内
- //11626 给你凸包的点(无序),按逆时针排序,内点排序即可
- //109 同 POJ1264
- //10002 求凸多边形的质心
- //218 水题,求凸包的点还有输出总边长
- //10173 旋转卡壳求凸包最小外接矩形
- //11096 求凸包周长,水题
- //10088 求多边形内点个数
- //10065 多边形面积
- //10652 凸包面积矩形面积
- //361 凸包解在所有三角形内
- Accept//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
- Accept //ural 1020 周长+圆周长
- Accept //ural 1052 找最多点共线
- Accept //ural 1084 求固定半径的圆 和 固定长度矩形相交面积(圆和矩形同一个中心)
- Accept //ural 1207 把点分成相等的两部分 极角排序
- Accept //ural 1348 求点到直线最远最近点
- Accept //ural 1159 二分半径,注意所有点都在圆某条直径的特殊情况
- Accept //ural 1489 三维转二维,细节注意下就OK
- Accept 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 最小圆覆盖,随机增量方法
- Accept//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
- Accept//1039 Pipe
- Accept////1066
- 1092 Farmland
- Accept////1106 Transmitters
- Accept////1113 Wall
- ////1118 Lining Up
- 1133 Stars
- Accept1151 Atlantis
- 1225 STRICTLY INSCRIBED SIMILAR TRIANGLES
- 1259 The Picnic
- 1263 Reflections
- // 1264 凸包+判断点是否在多边形内+多边形面积
- //1265 Area
- Accept1266 Cover an Arc.
- Accept////1269 Intersecting Lines
- Accept//1271 Nice Milk 半平面交
- Accept////1279 Art Gallery
- ////1288
- 1294 Not Too Convex Hull
- 1319 Pipe Fitters
- Accept////1329
- 1347 Triangle
- 1361 JaWs
- Accept////1375 Intervals
- Accept//1379 Run Away
- ////1380
- ////1385
- Accept//1389 Area of Simple Polygons
- 1408 Fishnet
- Accept//1410 Intersection 线段和矩形相交,注意题意
- //1418 Viva Confetti 求圆和圆相交的交点,然后计算交点在某个圆内,按极角排序在同一个圆周上的点(记得去重),然后计算每小段弧的中点,然后看这个中点在几个圆盘里,记录这个点和对应的id(可以记成一个点一个id)。最后扫一遍中点,未被遮住的就算到答案里。 另外需要特殊处理的就是,如果一个盘盘未被覆盖,就是它是完整的,或者它完全被覆盖,这样的话计算交点是算不出来的,需要特判。
- 1428 Hermes’ Colony
- Accept1434 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
- Accept//1556 The Doors
- ////1569 Myacm Triangles
- Accept1584 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
- Accept////1654 Area
- 1660 Princess FroG
- Accept1673 EXOCENTER OF A TRIANGLE
- 1685 Color Tunnels
- 1687 Buggy Sat
- 1688 Dolphin Pool
- 1693 Counting Rectangles
- Accept1696 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
- Accept1873 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
- Accept////2002
- Accept////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
- Accept2069 Super Star 最小覆盖球
- Accept2074 Line of Sight
- Accept////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
- Accept////2187
- 2284 That Nice Euler Circuit
- Accept////2318
- Accept//2354 大地坐标系求 球面距离
- Accept////2398
- ///2504 同zoj1892
- Accept//2546 求两圆相交面积
- ////2606
- ////2610
- 2621 Parallelepiped
- 2622 Convex hull
- Accept//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!
- Accept//3130 How I Mathematician Wonder What You Are! 判断是否有核,半平面交
- 3135 Polygons on the Grid
- 3334 Connected Gheeves
- Accept//3335 Rotating Scoreboard 判断是否有核,半平面交
- Accept3347 Kadj Squares
- Accept////3348
- Accept//3384 Feng Shui 半平面交
- 3407 Brookebond s’en va en guerre…
- 3410 Split convex polygon
- //3058 求圆与环的相交面积
- 3597
- Accept//3608 Bridge Across Islands 求俩凸包最小距离,旋转卡壳
Accepthdu 3662 Accepthdu 4266
Accept//ECNU 1624 求交集多边形面积 求俩凸多边形面积。水题。可用半平面交,也可以自己YY做。
poj 1259 最大内部凸包
Accepthdu 3644 多边形内能放进最大圆半径(可能是凹的,二分+判断)
Accept//hdu 1086
//hdu 3982 半平面交+求凸多边形和圆的面积交
//hdu 4063 注意判断线段是否被圆覆盖的方法,可以分为一小段一小段判断,也可以整体根据左圆右端点比右圆左端点靠右(靠下)判断
卡壳
来自:ACM计算几何题目推荐 - 脑残 - 博客频道 - CSDN.NET
把下面的东东都看看,题目刷刷应该就差不多了吧哈。。哈哈。。
其实也谈不上推荐,只是自己做过的题目而已,甚至有的题目尚未AC,让在挣扎中。之所以推荐计算几何题,是因为,本人感觉ACM各种算法中计算几何算是比较实际的算法,在很多领域有着 重要的用途(例如本人的专业,GIS)。以后若有机会,我会补充、完善这个列表。
计算几何题的特点与做题要领:
- 大部分不会很难,少部分题目思路很巧妙
- 做计算几何题目,模板很重要,模板必须高度可靠。
- 要注意代码的组织,因为计算几何的题目很容易上两百行代码,里面大部分是模板。如果代码一片混乱,那么会严重影响做题正确率。
- 注意精度控制。
- 能用整数的地方尽量用整数,要想到扩大数据的方法(扩大一倍,或扩大sqrt2)。因为整数不用考虑浮点误差,而且运算比浮点快。
- 一、点,线,面,形基本关系,点积叉积的理解
- 二、凸包问题
- 三、面积问题,公式问题
- 四、半平面交
- 五、计算几何背景,实际上解题的关键是其他问题(数据结构、组合 数学,或者是枚举思想)
- 六、随机算法
- 七、解析几何
- 八、旋转卡壳
- 九、其他问题
AcceptPOJ 2318 TOYS(推荐)
http://poj.org/problem?id=2318
AcceptPOJ 2398 Toy Storage(推荐)
http://poj.org/problem?id=2398
一个矩形,有被若干直线分成N个格子,给出一个点的坐标,问你该点位于哪个点中。
知识点:其实就是点在凸四边形内的判断,若利用叉积的性质,可以二分求解。
AcceptPOJ 3304 Segments
http://poj.org/problem?id=3304
知识点:线段与直线相交,注意枚举时重合点的处理
AcceptPOJ 1269 Intersecting Lines
http://poj.org/problem?id=1269
知 识点::直线相交判断,求相交交点
AcceptPOJ 1556 The Doors (推荐)
http://poj.org/problem?id=1556
知识点:简单图论+简单计算几何,先求线段相交,然后再用Dij求最短路。
AcceptPOJ 2653 Pick-up sticks
http://poj.org/problem?id=2653
知识点:还是线段相交判断,注意判断的顺序。
AcceptPOJ 1066 Treasure Hunt
http://poj.org/problem?id=1066
知识点:线段相交判断,不过必须先理解“走最少的门”是怎么一回事。
AcceptPOJ 1410 Intersection
http://poj.org/problem?id=1410
知识点:线段与矩形相交。正确理解题意中相交的定义。
详见:http://hi.baidu.com/novosbirsk/blog/item/68c682c67e8d1f1d9d163df0.html
AcceptPOJ 1696 Space Ant (推荐)
http://poj.org/problem?id=1696
德黑兰赛区的好题目。需要理解点积叉积的性质
AcceptPOJ 3347 Kadj Squares
http://poj.org/problem?id=3347
本人的方法极度猥琐。复杂的线段相交问题。这个题目是计算几何的扩大数据运算的典型应用,扩大根号2倍之后就避免了小数。
AcceptPOJ 2826 An Easy Problem?! (推荐)
http://poj.org/problem?id=2826
问:两条直线组成一个图形,能容纳多少雨水。很不简单的Easy Problem,要考虑所有情况。你不看discuss看看能否AC。(本人基本不能)提示一下,水是从天空垂直落下的。
AcceptPOJ 1039 Pipe
http://poj.org/problem?id=1039
又是线段与直线相交的判断,再加上枚举的思想即可。
AcceptPOJ 3449 Geometric Shapes
http://poj.org/problem?id=3449
判断几何体是否相交,不过输入输出很恶心。
此外,还有一个知识点,就是给出一个正方形(边不与轴平行)的两个对角线上的顶点,需要你求出另外两个点。必须掌握其方法。
AcceptPOJ 1584 A Round Peg in a Ground Hole
http://poj.org/problem?id=1584
知识点:点到直线距离,圆与多边形相交,多边形是否为凸
AcceptPOJ 2074 Line of Sight (推荐)
http://poj.org/problem?id=2074
与视线问题的解法,关键是求过两点的直线方程,以及直线与线段的交点。数据有一个trick,要小心。
AcceptPOJ 1113 Wall
http://poj.org/problem?id=1113
知识点:赤裸裸的凸包问题,凸包周长加上圆周。
AcceptPOJ 2007 Scrambled Polygon
http://poj.org/problem?id=2007
知识点:凸包,按极角序输出方案
AcceptPOJ 1873 The Fortified Forest (推荐)
http://poj.org/problem?id=1873
World Final的水题,先求凸包,然后再搜索。由于规模不大,可以使用位运算枚举。
详见:http://hi.baidu.com/novosbirsk/blog/item/333abd54c7f22c52574e0067.html
AcceptPOJ 1228 Grandpa's Estate (推荐)
http://poj.org/problem?id=1228
求凸包顶点数目,很多人求凸包的模板是会多出点的,虽然求面积时能得到正确答案,但是在这个题目就会出问题。此外,还要正确理解凸包的性质。
AcceptPOJ 3348 Cows
http://poj.org/problem?id=3348
凸包面积计算
AcceptPOJ 1654 Area
http://poj.org/problem?id=1654
知识点:利用有向面积(叉积)计算多边形面积
AcceptPOJ 1265 Area
http://poj.org/problem?id=1265
AcceptPOJ 2954 Triangle
http://poj.org/problem?id=2954
Pick公式的应用,多边形与整点的关系。(存在一个GCD的关系)
半平面交的主要应用是判断多边形是否存在核,还可以解决一些与线性方程组可行区域相关的问题(就是高中时的那些)。
AcceptPOJ 3335 Rotating Scoreboard
http://poj.org/problem?id=3335
AcceptPOJ 3130 How I Mathematician Wonder What You Are!
http://poj.org/problem?id=3130
AcceptPOJ 1474 Video Surveillance
http://poj.org/problem?id=1474
知识点:半平面交求多边形的核,存在性判断
AcceptPOJ 1279 Art Gallery
http://poj.org/problem?id=1279
半平面交求多边形的核,求核的面积
AcceptPOJ 3525 Most Distant Point from the Sea (推荐)
http://poj.org/problem?id=3525
给出一个多边形,求里面的一个点,其距离离多边形的边界最远,也就是多边形中最大半径圆。
可以使用半平面交+二分法解。二分这个距离,边向内逼近,直到达到精度。
AcceptPOJ 3384 Feng Shui (推荐)
http://poj.org/problem?id=3384
半平面交实际应用,用两个圆覆盖一个多边形,问最多能覆盖多边形的面积。
解法:用半平面交将多边形的每条边一起向“内”推进R,得到新的多边形,然后求多边形的最远两点。
AcceptPOJ 1755 Triathlon (推荐)
http://poj.org/problem?id=1755
半平面交判断不等式是否有解。注意不等式在转化时正负号的选择,这直接影响到半平面交的方向。
AcceptPOJ 2540 Hotter Colder
http://poj.org/problem?id=2540
半平面交求线性规划可行区域的面积。
AcceptPOJ 2451 Uyuw's Concert
http://poj.org/problem?id=2451
Zzy专为他那篇nlogn算法解决半平面交问题的论文而出的题目。
若干道经典的离散化+扫描线的题目,ACM选手必做题目
AcceptPOJ 1151 Atlantis (推荐)
http://poj.org/problem?id=1151
AcceptPOJ 1389 Area of Simple Polygons
http://poj.org/problem?id=1389
矩形离散化,线段树处理,矩形面积求交
AcceptPOJ 1177 Picture (推荐)
http://poj.org/problem?id=1177
矩形离散化,线段树处理,矩形交的周长,这个题目的数据比较强。线段树必须高效。
AcceptPOJ 3565 Ants (推荐)
http://poj.org/problem?id=3565
计算几何中的调整思想,有点像排序。要用到线段相交的判断。
详见:http://hi.baidu.com/novosbirsk/blog/item/fb668cf0f362bec47931aae2.html
AcceptPOJ 3695 Rectangles
http://poj.org/problem?id=3695
又是矩形交的面积,但是由于是多次查询,而且矩形不多,使用组合数学中的容斥原理解决之最适合。线段树是通法,但是除了线段树,还有其他可行的方法。
AcceptPOJ 2002 Squares
http://poj.org/problem?id=2002
枚举思想,求平面上若干个点最多能组成多少个正方形,点的Hash
AcceptPOJ 1434 Fill the Cisterns!(推荐)
http://poj.org/problem?id=1434
一开始发昏了,准备弄个线段树。其实只是个简单的二分。
AcceptPOJ 2420 A Star not a Tree?
http://poj.org/problem?id=2420
多边形的费马点。所谓费马点,就是多边形中一个点P,该点到其他点的距离之和最短。四边形以上的多边形没有公式求费马点,因此可以使用随机化变步长贪心法。
详见:http://hi.baidu.com/novosbirsk/blog/item/75983f138499f825dd54019b.html
这种题目本人不擅长,所以做得不多,模板很重要。当然,熟练运用叉积、点积的性质还是很有用的。
AcceptPOJ 1375 Intervals
http://poj.org/problem?id=1375
知识点:过圆外一点求与圆的切线
AcceptPOJ 1329 Circle Through Three Points
http://poj.org/problem?id=1329
求三角形外接圆
AcceptPOJ 2354 Titanic
http://poj.org/problem?id=2354
求球面上两个点的距离,而且给的是地理经纬坐标。
AcceptPOJ 1106 Transmitters
http://poj.org/problem?id=1106
角度排序,知道斜率求角度,使用atan函数。
AcceptPOJ 1673 EXOCENTER OF A TRIANGLE
http://poj.org/problem?id=1673
可以转化为三角形的垂心问题。
AcceptPOJ 2187 Beauty Contest
http://poj.org/problem?id=2187
凸包求最远点对。可以暴力枚举,也可以使用旋转卡壳。
AcceptPOJ 3608 Bridge Across Islands(难)
http://poj.org/problem?id=3608
两个凸包的最近距离。本人的卡壳始终WA。郁闷。
POJ 1981 Circle and Points
http://poj.org/problem?id=1981
求单位圆最多能覆盖平面上多少个点
这次的题目不再局限于POJ了,因为自己去年周游了各个OJ,反而很少在POJ切题了。而且这次推荐的题目比上次难了,也复杂多了。现在看回自己第一次写的计算几何题目推荐,实在感到当时自己写得有点肤浅。其实对于一些大牛来说,这些题目也算不了什么。