您的浏览历史

算法艺术与信息学竞赛

促销活动
  • [本书]参加清华大学出版社满58元赠书活动
精彩评论

基本信息

编辑推荐

如果说信息科学与计算机技术为我们开辟了一片新的天地,程序设计是这片天地的灵魂居住的花园,那么程序设计竞赛则是点缀这个花园,使她充满灵气的塔宇。
  计算机解题的核心是算法设计。算法设计涉及许多先修的基础知识,包括数据结构、高级语言程序设计、离散数学、图论、组合数学、人工智能、计算几何等。当然还包括除数学与信息学之外的其他学科知识,因为没有这些知识,往往连题目都会看不懂,这可能也是要求参加ACM大赛的选手应该具备全面科学素养的原因之一。 刘汝佳、黄亮两位作者都曾在高中时参加过信息学奥林匹克竞赛活动,他们在如何用计算机解难题方面投入过很大精力,有着比较丰富的经验。

推荐阅读

内容简介回到顶部↑

本书较为系统和全面地介绍了算法学最基本的知识。这些知识和技巧既是高等院校“算法与数据结构”课程的主要内容,也是国际青少年信息学奥林匹克(IOI)竞赛和ACM/ICPC国际大学生程序设计竞赛中所需要的。书中分析了相当数量的问题。
本书共3章。第1章介绍算法与数据结构;第2章介绍数学知识和方法;第3章介绍计算机几何。全书内容丰富,分析透彻,启发性强,既适合读者自学,也适合于课堂讲授。
本书适用于各个层次的信息学爱好者、参赛选手、辅导老师和高等院校计算机专业的师生。本书既是信息学入门和提高的好帮手,也是一本内容丰富、新颖的资料集。

作译者回到顶部↑

本书提供作译者介绍

刘汝佳 1982年12月生。于2000年3月获得NOI2000全国青少年信息学奥林匹克竞赛一等奖第四名,进入国家集训队,并因此保送到清华大学计算机科学与技术系学习至今。2000年9月建立个人网站 "信息学初学者之家(OIBH)",该网站现已成为国内最具影口向力的信息学竞赛网站之一。大一时参加ACH/ICPC国际大学生程序设计竞赛,获得2001年亚洲-上海赛区冠军和2002年世界总决赛银牌(世界第四),并担任2002年和2003年北京赛区裁判。2003年12月为止共为全国青少年信息学竞赛(NOI)、IOI中国国家队.. << 查看详细

目录回到顶部↑

第1章 算法与数据结构
1.1 编程的灵魂--数据结构+算法=程序
1.2 基本算法
1.2.1 枚举
1.2.2 贪心法
1.2.3 递归与分治法
1.2.4 递推
1.3 数据结构(1)--入门
1.3.1 栈和队列
1.3.2 串
1.3.3 树和二叉树
1.3.4 力瘃其基本算法
1.3.5 排序与检索基本算法
1.4 数据结构(2)--拓宽和应用举例
1.4.1 并查集
1.4.2 堆及其变种
1.4.3 字典的两种实现方式:哈希表、二叉搜索树
1.4.4 两个特殊树结构:线段树和Trie
1.5 动态规划
1.5.1 动态规划的两种动机

前言回到顶部↑

信息学(informatics)是一门新兴的学科,主要是指利用计算机及其程序设计来分析问题、解决问题的学问。随着计算机逐步深入生活,网络日趋普及,"信息革命"已经到来。信息学的地位逐步提高,青少年信息学竞赛也方兴未艾,在世界范围内受到了越来越多的重视。国际上,信息学竞赛主要分为两类:中学生的国际信息学奥林匹克和大学生的国际大学生程序设计竞赛。国际信息学奥林匹克(International Olympiad in Informatics,IOI)始于1989年,是联合国教科文组织倡导举行的五项国际学科奥林匹克之一。中国队每届都取得了名列前茅的佳绩,所有选手全部获奖,多次总分名列第一。国际大学生程序设计竞赛(ACM International Collegiate Programming Contest,ACM/ICPC)分为地区赛和国际总决赛,中国从1996年开始参加,现有3个地区赛赛点。清华大学、上海交通大学和中山大学等学校多次进入国际总决赛。上海交通大学队还获得了2002年的世界冠军的好成绩。从大局看,竞赛不是目的,而是推动普及的手段。虽然国内在培养信息学的优秀人才方面做了很大的努力,而且成绩斐然,但仍然存在一些遗憾之处:
第一,书籍资料的缺乏性。由于信息学竞赛的普及不如其他学科竞赛,辅导教师和研究人员相对匮乏,参与写作的人员也较少,致使国内此类书籍缺乏,而好书尤其缺乏。由此造成了不少信息学爱好者求书无门。另外,一些已出版的同类书籍或艰深难懂,或教条灌输,使不少爱好者望而却步,中途放弃,以至于信息学竟成了一种"曲高和寡"的学问。然而,社会信息化和信息学普及的大势已不可逆转,所以,信息学竞赛呼唤通俗易懂又有相当学术含量的好书。
第二,地区的不平衡性。由于信息学发展的时间毕竟不算长,很多地区在中学阶段刚刚开设或者还未开设信息学课程,师资力量相对比较薄弱。而且,信息学竞赛相对于其他学科,毕竟上手比较困难,这使得每年都有相当数目的信息学爱好者因为自学难度过大而中途放弃,从而导致国内信息学教学水平存在着很明显的地区不平衡性。很多地处信息学竞赛起步较晚地区的信息学爱好者们渴望能买到既实用又便于自学的书籍。
第三,国内视野的局限性。国内不少从事信息学竞赛研究的教育工作者把大部分精力放到了国内竞赛题目的研究中,而忽视了其他国家和地区的竞赛题目和研究成果。信息学竞赛题目的风格和内容往往受到本地传统文化等因素的影响,不同地区的题目往往有较大差异,因此熟悉各个国家的出题风格和特点,训练自己各方面的解题能力是很有必要的。所以,对于中高层选手和长期从事信息学竞赛辅导的老师来说,很需要紧跟国际动向、充分介绍国外成果的好书。
总之,从以上3点可以看出,国内信息学的普及度还远远不够。本书的出版,一方面是为了弥补国内信息学便于自学的普及读物方面的不足,拉近国内信息学竞赛起步较晚地区与发达地区的差距。另一方面是为了向国内读者介绍国外最新研究成果和竞赛试题,填补这方面的空白,拉近国内和国际最新发展的距离。
本书在理论方面参考了国外的最新研究成果的论文报告,在实际运用方面大量选用了在国内研究较少的外国竞赛的优秀题目,对信息学竞赛理论研究和实践都具有一定的参考价值,同时本书也是一本难得的资料集。
本书分为3章,第1章介绍算法与数据结构。算法与数据结构是信息学中最重要的部分之一,内容多而杂,不容易从整体上把握。本章的前三节介绍复杂度分析基本理论、基础算法和基础数据结构,重在给读者一定的感性认识,然后分三个专题介绍三个重要的问题:数据结构的应用、动态规划和搜索。第2章介绍信息学中用到的数学。数学是信息学的基础,因此本书专门用一章的篇幅加以详细论述。本章容量大,理论性比第1章强,涉及到基本代数方法、初等数论、组合数学和图论等问题。第3章介绍计算几何的基础知识、基本算法以及技巧。3.1节从最基本的位置和方向问题介绍叉积和点积;3.2节过渡到多边形、多面体及其容积、重心的求取以及形内形外的判断;3.3节讨论凸包这个最基本的几何模型及其应用;3.4节介绍了几个常用的特殊算法,包括分治法、离散化和扫描法,还介绍了增量和随机增量算法。
本书包含的内容非常多,各个层次、各种需求的读者都能在本书中找到适合自己的内容。本书丰富的内容能给读者以很大的选择余地,不同难度的例题和习题中既有引导读者兴趣的入门题目,又有极富挑战性的精彩题目,习题编号前的*越多,表示作者越推荐。
本书的第1章和第2章由刘汝佳编写,第3章由黄亮编写,在成书过程中还得到了很多老师和选手的大力支持。
在第3章的写作过程中,上海交通大学ACM代表队的不少队员和教练给了作者许多帮助。
要特别感谢陆靖;感谢远在美国的陈晓敏,他与作者进行了多次富有启发意义的讨论并提供了不少国内罕见的资料;感谢吕侣、陶云峰、杨寅、严琦琦、林晨曦、龚理、田斌、张羲等同学对本书写作的支持和与作者进行的讨论。
感谢世界著名计算几何学家Joseph O'Rourke博士对作者的启发。
在前两章的写作过程中,部分IOI2002和IOI2003中国国家集训队的成员提出了不少宝贵的意见,也提供了一些资料作为帮助,他们是王知昆、张一飞、李睿、何林、毛子青、骆骥、齐鑫、赵爽、金恺、李益明、符文杰、刘才良、张宁、黄芸。
感谢俞玮和林希德,他们与作者一起进行了大量的试题翻译工作,并讨论和撰写了题目分析。
感谢在讨论中启发作者思维并教会作者不少知识的外国朋友们:瑞典的Jimmy Mardell、加拿大的Derek Kisman、波兰的Tomasz Malesinski、乌克兰的Alexandar Gmshetsky、保加利亚的Petko Minkov。
感谢中国著名人像摄影家魏德运先生在本书的出版过程中所给予的帮助。
感谢北京师范大学ACM代表队的吴莹莹同学为本书的出版所给予的大力支持和帮助。
特别感谢在本书写作过程中对作者大力支持的各位老师!他们是:IOI中国队总教练吴文虎老师、ACM/ICPC清华大学代表队总教练王帆老师和邬晓钧老师、ACM/ICPC上海交通大学代表队总教练俞勇教授、ACM/ICPC德黑兰赛区总裁判Ramtin Khosravi先生、ACM/ICPC世界总决赛裁判Shahriar Manzoor先生和ACM/ICPC世界总决赛筹划指导委员会的Miguel Revilla先生。
作 者
2003年12月2日

序言回到顶部↑

计算机解题的核心是算法设计。算法设计涉及许多先修的基础知识,包括数据结构、高级语言程序设计、离散数学、图论、组合数学、人工智能、计算几何等。当然还包括除数学与信息学之外的其他学科知识,因为没有这些知识,往往连题目都会看不懂,这可能也是要求参加ACM大赛的选手应该具备全面科学素养的原因之一。
刘汝佳、黄亮两位作者都曾在高中时参加过信息学奥林匹克竞赛活动,他们在如何用计算机解难题方面投入过很大精力,有着比较丰富的经验。在上大学之后,又投入了大量精力帮助训练中国队的小选手和参加ACM世界大学生程序设计大赛。他们深感这些活动对提高学生的能力和全面素质所起的巨大作用。因此,他们利用课余时间,广泛收集各地各类试题,并着力研究、分析与归类,想出比较好的解法,特别是总结出若干的思路和经验写成书和大家共享。从他们开始动笔到成书期间又花了大量的心血,对一些难题的解法也有了独到的见解。这本书应该说是很难得的经验之谈。对一个编程高手来说,借鉴别人的经验是十分重要的。因此,我想将这本书推荐给参加IOI的中学生和参加ACM/ICPC的大学生阅读。
本书的命名也有独到之处。就我本人的教学经历来看,算法的确是艺术。艺术与科学本来就是孪生姊妹,不科学的东西谈不上艺术。艺术给人以美的感受,而算法属于数学文化范畴,数学的美在算法中得到了充分的体现,特别是当今数学已经进入新的机器时代,利用计算机求解问题,需要人充分开动脑筋,解决一系列难点,解题过程本身就是一个精益求精追求完美的过程。在这样一个过程中,编程者在付出艰辛的努力之后,会有一种获得成功的愉悦。正如一些数学大师所言:数学是理性的艺术,是创造性的艺术。在编程解题的过程中,通过理性的思维和理性的实践,你一定会感受到算法艺术的无穷魅力。一个颇具匠心的好算法会让你拍案叫绝,感受到它的思维艺术之美。我们许多参加过IOI和ACM/ICPC程序设计大赛的选手,当问起他们当年的拼搏是否艰苦时,他们都说苦中有乐,苦中有甜。这可能就是感受到了这种思维艺术的魅力。
科学思维能力的提高是成就事业最重要的一个因素,希望本书对你思维能力的提高能有很大的帮助。
清华大学计算机系教授,博士生导师
信息学奥林匹克中国队总教练
2003年12月

评论交流

共有70人开贴评论  129人参与评论  67人参与打分 查看

47人
 70%
用户平均打分
我要写评论 help如何参与评论和打分
9人
 13%
6人
 8%
2人
 2%
3人
 4%

touch_224

二级评论员
该会员在china-pub购买过此书 精彩书评
评价等级:  
发表于:2010-3-25 13:54:00
从书的内容布局可以看出这是一本典型的竞赛指导书,适合NOIer和ACMer进阶学习。
对于一般的算法学习,算法导论更加合适,这里的高级数据结构和算法技术实际用到的机会不大,有了解即可。
您觉得呢? 送鲜花 (得0支)  扔鸡蛋 (得0个)

aerotopgun

三级评论员
该会员在china-pub购买过此书
评价等级:  
发表于:2010-2-17 15:42:00
好书,不错的竞赛书,值得仔细阅读。
您觉得呢? 送鲜花 (得0支)  扔鸡蛋 (得0个)

fatmouse

专家级评论员
该会员在china-pub购买过此书 精彩书评
评价等级:  
发表于:2010-1-26 13:46:00
参加程序竞赛的指导书。主要侧重算法思想,缺少实现方法。对初学者来说,只看本书是不够的,还得有一些编程技巧。
综合来说,本书缺乏对应用背景的介绍,这反而限制读者对书中所述算法的理解。
您觉得呢? 送鲜花 (得0支)  扔鸡蛋 (得0个)

黄金

一级评论员
该会员在china-pub购买过此书 精彩书评
评价等级:  
发表于:2010-1-3 21:32:00
内容精简深奥,属于提高研究类……对稿算法的有很高的研究价值。值得一看。
您觉得呢? 送鲜花 (得0支)  扔鸡蛋 (得0个)

tanghoujun
一级评论员
该会员在china-pub购买过此书
评价等级:  
发表于:2009-9-17 10:16:00
NOI和ACM必备的参考书,不过阅读过程中需要查询大量其他资料,有难度
您觉得呢? 送鲜花 (得0支)  扔鸡蛋 (得0个)
我要写评论
查看所有评论交流(共70条)