前言
ACM国际大学生程序设计竞赛(ACM International Collegiate Programming Contest, ACM/ICPC)由ACM(Association for Computing Machinery,美国计算机协会)主办,是世界上公认的规模最大、水平最高、影响最广的国际大学生程序设计竞赛。
由于ACM大学生程序设计竞赛能迅速提高学生的程序设计能力和团队协作水平,又能有效地提升学校程序设计教学水平和质量,促进校际交流与竞争,近年来,ACM大学生程序设计竞赛在我国得到了大规模的推广,各个高校都十分重视。然而,由于该赛事是个新鲜事物,且ACM程序设计有其特殊的规律,很多高校难以适应。
为了尽快解决这个问题,笔者将近三年来潜心钻研ACM竞赛的相关资料整理出来,供大家分享。经实践证实,本书能在两个月内将程序设计的初学者培养成ACM竞赛高手。
本书以C++泛型编程的应用为主线,一步一步带领读者登上ACM程序设计的殿堂。第1章讲解了ACM程序设计入门知识;第2章讲解了C++泛型编程的容器、迭代器和常用算法;第3章讲解了ACM程序设计的基本编程技巧;第4章讲解了50道原版ACM竞赛题的解题思路,并配有C++泛型编程参考答案和题目的中文翻译。
本书第1版获得了广大ACM竞赛师生的认可与好评,已成为大学生参加ACM竞赛的必备入门级读物。
本书是编者主持的浙江省教育厅科研项目(编号:Y200907440)的科研成果之一。经过近四年的深入研究,编者已在Linux平台上成功研发了一款高质量的OJ系统——RealOJ(网址www.realoj.com)。有了上述研究背景,才有了本书的第2版修订。
第2版修订的主要地方有:
(1)采用跨平台的Bloodshed Dev-C++作为编译器,书中讲述了其详细用法;
(2)采用了笔者研制的RealOJ平台,书上的题目在该网站里都能找到;
(3)修正了第1版中存在的印刷错误。
本书的出版,首先得感谢我的导师浙江师范大学数理信息学院王基一教授和丁革建教授、浙江工业大学信息学院钱能教授对笔者学术工作的不断启发与鼓励;感谢北京大学出版社的大力支持!
ACM程序设计要求很高,由于时间仓促,笔者水平有限,疏漏之处,在所难免,恳请广大专家、读者批评指正!笔者邮箱zjnuken@126.com,个人主页www.realoj.com。
曾棕根
2011年1月