ACMers那些事
ACM是什么?能吃吗?
我们所说的ACM竞赛,通常指的是国际大学生程序设计竞赛(International Collegiate Programming Contest,ICPC),ACM只是主办方的名字(国际计算机协会)。
但千万不要被这个名字蒙蔽了——虽然叫“程序设计竞赛”,但编程只是基础,重点是数据结构与算法。兼具深度和广度:涉及到各种算法,且每一种都要熟练理解并运用。
ACM不能吃,但ACM的奖项绝对能让你混口饭吃,还能混口好饭。ACM奖项含金量很大,受国内外认可,在保研、就业、出国等方面都有很大的作用。(刘老板说铜奖=C9高校,银奖=清华北大or国际高校) 同时,学ACM的同时可以参加其他算法类竞赛,例如CSP认证、蓝桥杯、PAT等,这些跟ACM比起来都是弟弟,但足以让你加满综测了。
ACM学什么?
建议学习程序设计基础后,其他三个方面由浅到深同时进行,因为它们是互相联系的。
程序设计语言推荐C++,因为C++运行效率最高,在比赛中比较吃香,而且网络上很多算法和数据结构教程都是C++实现的。这里的C++不需要掌握精髓(类和对象、模板、元编程等)!!实际上就是C with STL!!!
C++从入门到入土视频 只看基础部分和STL就好!!
《算法竞赛入门经典》《挑战程序设计竞赛》《信息学奥赛一本通》
ACM规则?
ACM的规则就是ACM赛制,没错,这玩意牛逼到独创了一种赛制!
选手的成绩按做出题目的数量排名,做出题目数量相同的,用时少的排名靠前。一道题必须通过所有数据点才算做对,没有部分分,而且提交了错误答案会罚时!!!因此,做题的速度、准确度都很重要。
很抽象?假期去各平台打一打比赛就好啦!!
如何练习?
刷OJ!刷OJ!刷OJ!OJ即online judge,在线评测平台,有很多的算法题,可以在线提交代码,然后查看结果。有的平台还会经常举办比赛,最出名的就是Codeforces和Atcoder,打比赛可以加rating(积分)!在刷题数量、在各平台的rating,都将成为最后推选到“第一梯队”参加ICPC的重要依据!!!
推荐的刷题平台详见群文件,帅气可爱的振豪dalao已经帮你整理过啦~~
刷题路线:个人建议“由易到难”、“专题练习”,可以学完某个算法或知识点后,立刻去刷这个算法的相关题目。Vjudge平台的kuangbin带你飞栏目给了一个很好的刷题路线。