现在的位置: 首页 > 综合 > 正文

【转】如何通过ACM/ICPC提高自学能力

2019年04月05日 ⁄ 综合 ⁄ 共 1036字 ⁄ 字号 评论关闭

经验
ACM竞赛涉及的方面很广几乎囊括计算机科学的所有方面,主要有下面几个方面:
1、程序设计能力:熟练掌握一门程序设计语言:C/C++, Pascal, Java。大多数oj上都提供以上三种语言的支持,但Final似乎不提供pascal,语言我推荐C/C++,价格便宜量又足。:)
2、数据结构:栈、队列、堆、二叉数、并查集、线段树……事实还有一些我也没掌握的数据结构,例如说后缀树什么的。
3、算法:搜索、动态规划、图论算法、递推、递归、二分、贪心、分治……包括所有经典算法,还有经典算法的结合,例如二分加贪心,搜索加图论什么的。
4、相关知识:图论、数论、组合数学、计算几何、编译原理、操作系统、各种的数学结论……有的时候要用到一些莫名其妙的数学结论,这种东西要看出题者的喜好,要是碰上正好知道的,那就是你的运气了。

训练方法
1、做题才是王道,过题数超过1000你怎么说都是个牛人。我们几个都是做题做出来,当然除了做更重要的是想,不过我认为,读,做,想是三位一题的,所以统称做题。
2、读书,读论文,尤其是图论、数论、组合数学方面,很多东西都不是课堂上能学到的,一定要积极主动的找资料看。
3、读解题报告,有一些难题怪题,没有类似题目的经验,很难想出解法,这种时候读一些解题报告有助于开拓视野,提高解题能力,但绝对不能对太过依赖解题报告。自己实际掌握的东西才是实力。

组队方案
1、比赛是三个人,配合很重要,谁做什么题,其他人干什么最好都有个计划。
2、组队要合理:各项能力最好能互补,例如一个队伍最好有一个数学强人,在有一个代码强人,总之各个队员能力的并集得覆盖竞赛题目范围

比赛经验
1、心理素质要好,真正比赛的时候,气氛非常紧张激烈,心理素质很大程度影响比赛发挥。(Final的时候,我就是差这么一点)
2、竞赛时一定要注意选题,题目太难要懂得放弃,要参考场上其他队伍都做出来的题目,做的人多的一般比较简单,不要把时间浪费在没什么人做的题目上。(血的教训啊,大家一定得吸取)

收获
收获太多了,可以说参加ACM/ICPC是我大学阶段参加的最有性价比的活动了。除了最基本的,脑子里填充了大量经典算法,其他收获还包括:
1、锻炼数学思维,提高解题能力
2、编程能力、心理素质
3、分析能力、动手能力
4、提高知名度

还有最重要的,玩ACM乐在其中,绝不是任何其他枯燥的课程所能媲美的。

转载自:http://hi.baidu.com/dream_fox/item/34354cf4ec065dc20dd1c870

抱歉!评论已关闭.