ACM-ICPC StepByStep(一)基础知识与参考资料
对于不是计算机专业的同学,如果一开始就从做题开始,可能并不是最好的方式。因为对编程环境和能够使用的工具了解不够,同时对于题目也不能区分哪些可以做哪些不可以做。这样会导致很多不必要的问题而浪费了时间。
因此,对于第一章,首先了解一下ACM的背景知识和,编程环境以及得到一些学习资料。
ACM-ICPC背景知识与建议
参考百度百科以及附件中开头部分
ACM-ICPC是美国计算机协会国际大学生程序设计竞赛,但是为了简单一般都叫ACM。
这是一个团队比赛,有三人组成一个队伍。正式比赛的时候有5个小时解决10题左右的题目。
题目主要分为计算几何,数据结构,动态规划,图论,数学,字符串,博弈等类型。
其中动态规划的类型太多,学习起来比较累,主要是掌握一些方法后不断刷题。
在这几类中,本人觉得数据结构比较实用(把字符串中自动机一类也归于数据结构),因为掌握数据结构较多以后,对于理解一些算法有比较深刻的理解,因为你看懂算法流程以后,明白实现的方式是什么,为什么复杂度可以优化。因此建议掌握了基本的编程功底后,开始学习较为简单的数据结构比较好。
编程环境
如果是为了学习算法,并不需要很复杂的编译器,建议使用codeblocks,但是网上下载的可能是IDE没有编译器,可以自己安装编译器然后设置,或者下载带MinGW的版本。目前dev也编的挺好了,自带编译器,也推荐使用。
如果是linux的,应该是大牛了,爱怎么玩都行。
学习资料
这里推荐两份学习资料,其中《基础篇》是天津大学为队员出的一本电子书,还有提高篇。
如果没有什么基础的建议先看《ACM程序设计曾宗根》,看着页数很多,其实很容易看完的。
有一定基础的同学就直接看《基础篇》,后续的文章中,我主要以基础篇的目录来说说如何练习做ACM题。
《ACM/ICPC算法基础训练教程》是天津大学ACM队教练带领队员编写的教材,我有幸参与其中的构思、编撰、审稿。个人对这本书的看法。第一版可能存在排版时出现一些错误,语言组织上可能存在一些问题,但是从该书的结构上,覆盖了ACM较多的算法(已经非常全面)和经典的题目(还有详细的题解),对于一个想入门和提高的学员来说是不错的材料。
资料下载: