ACM计算几何题目推荐

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

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

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/353256.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

洛谷 P1027 Car的旅行路线

P1027 Car的旅行路线 题目描述 又到暑假了,住在城市 AA 的 CarCar 想和朋友一起去城市 BB 旅游。她知道每个城市都有 44 个飞机场,分别位于一个矩形的 44 个顶点上,同一个城市中 22 个机场之间有 11 条笔直的高速铁路,第 II 个城市…

Matlab各种拟合

线性拟合见上一篇《回归分析》 非线性拟合: cftool %curve fitting toolbox非线性函数拟合工具箱。要确定系数的初始值和上下限(sftool用于三维的) %该函数可以生成m文件函数,方便在编程中使用,但是生成的m文件函数拟合的结果会有很大的误差和图形界面的结果不一样 1 comman…

Matlab线性规划(Linear Programming)

bintprog:0-1规划linprog:线性规划quadprogoptimtool整数规划第三方工具箱:YALMIP http://users.isy.liu.se/johanl/yalmip/pmwiki.php?nMain.Download

java(IO)读写文件乱码转换UTF-8问题

java(IO)读写文件乱码转换UTF-8问题 读取文件String Content  ""; // 文件很长的话建议使用StringBuffertry {FileInputStream fsnew FileInputStream("文件录取");InputStreamReader isr  new InputStreamReader(fis, "UTF-8");Buff…

类固醇上的Java:5种超级有用的JIT优化技术

Java开发人员? 优化您的生产监控。 请在所有已记录的错误,警告和异常之后查看源代码,调用堆栈和变量状态- 尝试Takipi 。 最有用的JVM JIT优化有哪些?如何使用它们? 即使您没有积极计划,JVM也有很多技巧可…

poj3714 最近点对

最近点对,采用分治方法。过程: 1对原数组依据x左标从小到大排序。 2二分数组,左边求出最小值,右边求出最小值,我们求最小的。 3找出对于左右两边的可能小于当前最小值的最近点对,更新最小值。 这题目需要区…

Matlab 格式化字符串sscanf

sscanf 是按一定的格式从字符串中读取出字符,它有以下几种用法: A = sscanf(str, format) A = sscanf(str, format, sizeA) [A, count] = sscanf(...) [A, count, errmsg] = sscanf(...) [A, count, errmsg, nextindex] = sscanf(...) Description A = sscanf(str, forma…

2018牛客暑假多校二 D(贪心)

题目描述: 你要按照顺序以此经过n个商店,每到达一个商店你可以购买一件物品,也可以出售你手中的商品。 同一时刻你手上最多拿一件商品。在第i个商店购买和出售的代价都是a[i]。 问你经过完n个商店后的最大收益。 同时,在最大化收…

ZOJ1450 Minimal Circle 最小圆覆盖

包含点集所有点的最小圆的算法 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId450 平面上有n个点,给定n个点的坐标,试找一个半径最小的圆,将n 个点全部包围,点可以在圆上。 1. 在点集中任取3点A,B,C。 2. 作一个包…

遗传算法各Matlab工具箱简介

关于matlab遗传算法工具箱主要有三种:1、gaot工具箱:这是网上流传的免费的工具箱,网上对它介绍的资料也挺多,它不是Matlab软件自带的,但可以自己配置使用。飞思科技产品研发中心编著《Matlab 6.X辅助优化计算与设计》第…

独眼巨人反应组织了Java 8库的寒武纪爆发

什么是独眼巨人反应? Lambda表达式和默认方法在Java 8中的出现预示了Java语言十年来最大的结构性变化。 在此基础上构建了一些新的很酷的API,例如Stream, Optional, CompletableFuture最终Java开发人员可以以更实用的样式进行编码。 尽管这是非常受欢迎的…

C语言中文件定位函数总结

C语言中文件定位函数主要是:fseek, ftell, fsetpos, fgetpos。 先来讲前两个函数,这是最基本的定位函数: fseek函数:能把文件指针移动到文件任何位置,其原型是:int fseek(FILE *fp, long offset, int fromw…

API

api 百科名片 API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。目…

Matlab gatool使用方法

可以通过输入gatool或者optimtool(ga)打开图形界面或者用ga()运行命令行函数设置Fitnessfunction 和对应的Number of variables,为了提高效率最好向量化适应度函数,然后设置Vectorize参数为On可以选择相应参数进行设置Population种群参数Fitness scalling适应度比例参数Selecti…

系统模块 OS

os.system("系统命令") 调用系统命令 os.system("task kill /f /im 系统的进程") 关闭系统进程 os.listdir(地址) 扫描目录里面的文件。默认的是当前文件夹 返回一个列表 import os # os.listdir(地址) 扫描目录里面的文件。默认的是当前文件夹 print(os.…

Matlab非线性拟合工具箱cftool

一、 单一变量的曲线逼近 Matlab有一个功能强大的曲线拟合工具箱 cftool ,使用方便,能实现多种类型的线性、非线性曲线拟合。下面结合我使用的 Matlab R2007b 来简单介绍如何使用这个工具箱。 假设我们要拟合的函数形式是 yA*x*x B*x, 且A>0,B>0…

jsf标签p:ajax_JSF简单Ajax示例

jsf标签<p:ajax>今天&#xff0c;我们将看到一些使用JSF的Ajax简单样本。 如果要查看有关JSF / Web应用程序的其他文章&#xff0c;请单击以下链接&#xff1a; 重定向后的JSF持久化对象和消息 &#xff0c; 使用JAAS和JSF进行用户登录验证 &#xff0c; JSF&#xff1a;…

C#中数据库事务、存储过程基本用法

SQL 事务 public bool UpdateQsRegisterSql(List<string> ids, int newQueueId, string newQueueName){using (SqlConnection con new SqlConnection(DBHelper.Instance.ConStr)){SqlTransaction tran null;try{con.Open();SqlCommand cmd con.CreateCommand();tran …

第一章 初识Mathematica

第一章 初识Mathematica 1&#xff0e;Mathematica是什么 Matematica是由美国Wolfram公司研究开发的一个著名的数学软件&#xff0c;它提供了非常强大的功能&#xff0c;能够完成符号运算、数学图形的绘制、甚至动画制作等多种操作。Matematica的基本系统主要是用C语言开发的&…

matlab中统计工具箱函数名大全

MATLAB统计工具箱包括概率分布、方差分析、假设检验、分布检验、非参数检验、回归分析、判别分析、主成分分析、因子分析、系统聚类分析、K均值聚类分析、试验设计、决策树、多元方差分析、统计过程控制和统计图形绘制等。优化工具箱包括无约束最优化、有约束最优化、二次规划、…