ACM如何入门,ACM竞赛需要学习哪些算法?

先是介绍一下我的成绩。(较好的成绩都已黑体标注,其他可直接忽略

大一:2017年4月份”玲珑杯“河南工业大学2017年ACM程序设计大赛暨河南高校邀请赛,获得银奖
2017年5月12日在哈尔滨师范大学参加第十二届黑龙江省大学生程序设计竞赛,获得铜奖。
2017年6月10日在我校参加南阳理工学院举行的第三届程序设计大赛,获得银奖
大二:2017年10月29日在西北工业大学参加第42届ACM国际大学生程序设计竞赛亚洲区域赛(西安),获得铜奖
2018年4月1日参加河南省第九届蓝桥杯—C/C++程序设计竞赛A组,获得第一名。
2018年5月27日参加信阳师范学院举办的河南省第十一届ACM程序设计大赛,获得金奖(第五名)。
大三:2018年9月28日在东北大学秦皇岛分校参加第四届中国大学生程序设计竞赛(秦皇岛),获得铜奖
2018年11月4日在中国石油大学参加第43届ACM国际大学生程序设计竞赛亚洲区域赛(青岛),获得银奖。
2018年11月11日在北京大学参加ACM-ICPC国际大学生程序设计竞赛亚洲区北京站(2018),获得铜奖
2018年11月25日在哈尔滨工业大学(深圳)参加第四届中国大学生程序设计竞赛总决赛,获得铜奖

一年铜两年银,也算运气非常好的了。并且大三参加的4场区域赛也全部拿奖(尤其是最难的2018-CCPC-final,当时我们队运气很好,最终挤进前60),对我来说绝对是无憾退役。

下面这些内容写给那些想参加ACM竞赛的人,前提是自己学校ACM发展的不理想(或者就没有ACM这个东西)。
(如果你是ACM大牛,或者是在ACM强校,推荐你去跟着你本校的ACM进度学习即可)

-------------------------------------------------------------------------------(分割线)


ACM如何入门,ACM竞赛需要学习哪些算法?(在这里面我会介绍什么时间段大概学习什么算法,进度)(我校的NYIST-ACM交流群:48719519 (qq))(这是个组队的比赛,你需要两个队友!!!)

我是2016级的学生,从开学后的国庆节开始从零接触ACM。

10月1日-10月7日(学习C语言基础,for,if else,while,scanf,printf的用法,在HDU第11页做一些简单的题目,做个50道左右)
10月份(坚持每天做4道题,周末翻倍)

等题量达到约150的时候,这个网站上http://codeforces.com/做做题目,出的非常有区分度,先从A题做起(只挑A做)
(自己思考30分钟还没有思路,就百度搜博客学习别人的代码,看博客看了一天还迷迷糊糊的题目就扔掉不要再纠结了(等个10天20天回来再重新做))。
11,12月份陆陆续续接触了一些简单的算法,比如快速幂(难度0),大数(难度1),并查集(难度3),二分(难度2),简单01背包(难度4)等等。(不会的就搜博客,自学即可,学不会的先放一边,过段时间再看)
大一寒假留校学习一些稍难的算法(深搜DFS,广搜BFShttps://cn.vjudge.net/contest/200652#rank题目做70%以上即可,最短路https://cn.vjudge.net/contest/206769#rank题目做70%以上),寒假集训可以留校到春节前一周。(个人认为BFS广搜比DFS深搜好理解,搞不明白DFS深搜递归过程的,可以下载一个 机器人点灯  小游戏,玩到后面你就明白什么是递归了,跟DFS递归是差不多的道理 ,留校时间学习搜索或者最短路(学会一个就OK),学有余力的可以同时学习两个)
大一第二学期3月份:复习一下学过的算法,并深入学习搜索,最短路。
4月份并开始按顺序接触dp,kmp,RMQ,矩阵快速幂树状数组线段树,容斥,欧拉函数,字典树,网络流,AC自动机,这些算法每个需要1-2周,这段时间可以试着参加自己省份的程序设计竞赛,其他省的也行。(可以出去参加一些简单的比赛,蓝桥杯的c/c++程序设计B组也行,主要是练练手)
每当学算法学不下去的时候,就再这个网站上http://codeforces.com/做做题目,出的非常有区分度,先从A,B题做起,C、D就比较困难了。(练思路)(我感觉有D的水平,区域赛拿个铜是没问题的)
大一暑假:(当然是留校学习啦)
集训时长约50天左右,一般会持续到开学前一周集训才结束,暑假有多校联赛(很多的ACMer都会来参加这个比赛),为这一年的亚洲区域赛(ACM国际大学生程序设计竞赛)做准备。多校联赛会在HDUOJ(杭州电子科技大学的HDU Online Judge System)举行,一共10场比赛,每场比赛大约参赛队伍800以上。通过这10场比赛的做题,补题(只补那些通过的人比较多的题目),对实力会有很大的提升。

9月份有各个地方的网络赛,可以打区域赛名额。
10月份-12月份如果有条件并机会的话就可以去试着参加,参加区域赛。

大二开始后就要接触一些更难的算法了,并且以前学过的算法要再学的深一点了,

比如:区间dp,概率dp,dp是需要大量练习的,(斜率优化,平行四边形优化,学有余力的可以学习)
网络流,有最大流最小割定理等等,(网络流难的是建图)
最短路,树的直径,最近公共祖先等等,
数论里的要学的东西就比较多了,比如:容斥,欧拉函数,(莫比乌斯反演,FFT,学有余力的可以学习一哈
计算几何也要做一些题练习练习。
各种树,线段树,主席树,树状数组等各种数据结构
矩阵快速幂熟练使用。
博弈论等等。

大二暑假同上(大一暑假)。

大三:一直拉往年的区域赛进行练习,好好准备区域赛即可!在这个上面可以搜到往年几乎所有的比赛https://cn.vjudge.net   课余时间多多练习http://codeforces.com/ div2.C、D.E题。


 

你可能感兴趣的:(成长之路)