- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
- PAGE
- PAGE 21 -
IOI’9中9 国集训队优秀论文选
- PAGE
- PAGE 22 -
IOI’9中9 国集训队优秀论文选
数据结构的选择与算法效率
——从 IOI98 试题 PICTURE 谈起
【关键字】
数据结构的选择 线性结构 树形结构
【摘要】
算法 + 数据结构=程序。设计算法与选择合适的数据结构是程序设计中相辅相成的两方面,缺一不可。数据结构的选择一直是程序设计中的重点、难点,正确地应用数据结构,往往能带来意想不到的效果。反之,如果忽视了数据结构的重要性,对某些问题有时就得不到满意的解答。通过对 IOI98 试题Picture 的深入讨论,我们可以看到两种不同的数据结构在解题中的应用,以及由此得到的不同的算法效率。本文以 Picture 问题为例,探讨数据结构的选择对算法效率的影响。
【正文】
引言
算法通常是决定程序效率的关键,但一切算法最终都要在相应的数据结构上实现,许多算法的精髓就是在于选择了合适的数据结构作为基础。在程序设计中,不但要注重算法设计,也要正确地选择数据结构,这样往往能够事半功倍。
在算法时间与空间效率的两方面,着重分析时间效率,即算法的时间复杂度,因为我们总是希望程序在较短的时间内给出我们所希望的输出。如果在空间上过于“吝啬”而使得时间上无法承受,对解题并无益处。
本文对 IOI98 的试题 Picture 作一些分析,通过两种不同数据结构的选择, 将了解到数据结构对算法本身及算法效率的影响。
Picture 问题及算法设计
一、Picture 问题
Picture 问题是 IOI98 的一道试题,描述如下:
墙上贴着一些海报、照片等矩形,所有的边都为垂直或水平。每个矩形可以被其它矩形部分或完全遮盖,所有矩形合并成区域的边界周长称为轮廓周长。
例如图 1 的三个矩形轮廓周长为 30:
数据结构的选择与算法效率——从 IOI98
数据结构的选择与算法效率——从 IOI98 试题PICTURE 谈起
数据结构的选择与算法效率——从 IOI98
数据结构的选择与算法效率——从 IOI98 试题PICTURE 谈起
图 1
要求编写程序计算轮廓周长。数据量限制: 0≤矩形数目5000;
坐标数值为整数,范围是[-10000,10000]。
二、算法描述
在算法的大体描述中,将不涉及到具体的数据结构,便于数据结构的进一步选择和比较分析。
(一)、轮廓的定义
在描述算法前,我们先明确一下“轮廓”的定义:
1、轮廓由有限条线段组成,线段是矩形边或者矩形边的一部分。
2、组成矩形边的线段不应被任何矩形遮盖。图 2 与图 3 分别是遮盖的两种情况。
CDABA L1 L2 L3
C
D
A
B
图 2 图 3 图 4
(AB 被遮盖) (CD 被遮盖)
(二)、元线段
本题的一大特征是分析矩形的边,而边的端点(即矩形的顶点)坐标为整数,且坐标取值范围已经限定在[-10000,10000]之间。这样,就可以把这个平面 理解成为一个网格。由于给出的坐标是整数,所以矩形边一定在网格线上。在网格中,对于一条线段我们最关心其绝对坐标。如图 4,我们认为矩形边 AB 由线
段 L 、L 、L 组成。像L 、L 、L
这样连接相邻网格顶点的基本线段,称之为“元
1 2 3 1 2 3
线段”,这样就把矩形边离散化了。显然,有限的元线段覆盖了所有的网格线,
且元线段是组成矩形边乃至组成轮廓的基本单位。一条元线段要么完全属于轮 廓,要么完全不属于轮廓。这种定义使我们对问题的研究具体到每一条元线段, 这样的离散化处理有利于问题的进一步讨论。
(三)、超元线段
IOI’9中
IOI’9中9 国集训队优秀论文选
- PAGE 23 -
- PAGE
- PAGE 24 -
IOI’9中9 国集训队优秀论文选
ABCD元线段的引入,使问题更加具体。但也应当看到,平面中共有 20001*20000*2 条元线段,研究的对象过多,而且计算量受到网格大小的影响,如果顶点坐标范围是[-1,000,000,1,000,000],元线段数目将达到 8*10^12,这是天文数字。因此有必要对“元线段”进行优化。受到元线段的启发,我们定义一种改进后的元线段——“超元线段”,它将由对平面的“切割”得到。具体做法是,根据每个矩形纵向边的横坐标纵向地对平面进行 2*N 次切割、根据矩形横向边的纵坐标横向地对矩形进行 2*N 次切割(N 为矩形个数)。显然,经过切割后的平面被分成了(2*N+1)^2 个区域,如图
A
B
C
D
图 5 图 6
其中像横向边 AB、纵向边CD 这样的线段就是“超元线段”。超元线段与元线段有着相似的性质,也是组成轮廓的基本单位。所不同的是,超元线段的数目较少
您可能关注的文档
最近下载
- (推荐!)人教版音乐二年级上册《报灯名》教案教学设计.pdf VIP
- 2025兴业银行总行国际业务部交易银行部招聘笔试参考题库附答案解析.docx VIP
- 一种利用酿酒废水和秸秆制备有机肥的方法.pdf VIP
- 人教版小学数学一年级下册全册教案(2024年3月修订).docx VIP
- 力劲DCC400吨压铸机说明书.pdf VIP
- 2025兴业银行总行国际业务部交易银行部招聘考试含答案.docx VIP
- 2025兴业银行总行国际业务部交易银行部招聘笔试模拟试题及答案解析.docx VIP
- 英语报刊选读词汇特色.ppt VIP
- 2025兴业银行总行国际业务部交易银行部招聘笔试含答案.docx VIP
- 2025兴业银行总行国际业务部交易银行部招聘考试备考试题及答案解析.docx VIP
原创力文档


文档评论(0)