2020年12月20日,南京区域赛结束,同时结束的,还有我的两年多的ACM生涯
接下来的寒假重心会向着找实习的方向努力,当然明年还有线下的区域赛、EC-finial以及明年的省赛等等,我都会去认真准备。
这篇文章会写什么
- 关于我
- 我的ACM简单的回顾
- 我的ACM成绩
- 写给新人
- ACM到底和数学建模、挑战杯等等的其他竞赛有什么区别
- ACM到底带给我什么了
- 为什么要打ACM
- 什么样的人适合去打ACM,什么样的人不适合去打ACM
- 写给已经进入了ACM的人
- 我在ACM的训练计划
- 除了ACM之外的计划
- 关于ACM写题
- ACM算法的学习规划
- 我的一些经验之谈
这篇文章更多的是想来自我总结一下历史,如果与你的理解有出入也请见谅
关于我
我的ACM简单的回顾
进入大学之前
我是2018年进入的大学,在这之前,我压根没有听说过ACM,也完全不知道这类竞赛,高中也是没有打过OI,也就是真正的纯粹的小白。当然,我的高中压根就不知道有什么叫OI的比赛,可能这就是所谓的省B类学校吧
但是我有优势,我从高一开始自学了程序,我当时想自己写游戏,然后学起来Unity了,也就顺便学了C#。至于优势,大概就是对程序有了自己的理解吧。如果让我对代码理解这个事情上进行一个分级的话,我会这样分:
- 完全不会程序(基本上就是那些完全没有学过代码的人)
- 学会了顺序、选择、循环语句(一般是刚刚开始学程序的人,对程序是万能的这条表示怀疑的人)
- 能够灵活的运用上述三种语句(突然发现仅使用这三种语句居然可以实现一切逻辑,相信代码是万能的,只是需要写代码的。通常这类人同样相信代码是高效的,认为所有的事情基本上都可以在电脑上花费一小段的时间就能得出结果)
- 知道了代码是非常局限的,计算机能计算的速度是非常有限的,在解决一个问题前会思考这个问题的逻辑,对这个问题进行优化以适合计算机去运行,这类人也就是一个ACMer的入门点
而那时候的我,大概就是第三类的人,比起同时期的同学,只能说我拥有着非常好的起点
但是,实际上,通过一个学期的学习,基本上所有的学生都能到达这个水平
大一
大学的第一个学期,课程安排是学C语言,但是我其实并不需要,因为这些东西只需要我把我学C#的知识转成C就行了
而这个学期,校集训队也联系上了我,只不过因为我有提前的知识了,虽然我在那个时候还完全不知道对于代码还有第四层理解
当然,慢慢的我也接触到了很多算法,例如dfs、bfs之类的,只能说我在那个时候对ACM的理解还存在于ACM是提供更多的解决问题的办法而已
后来,学到了在ACM中最重要的东西:复杂度
也慢慢的开始学习到各种基础的算法:gcd、最短路、背包问题、KMP等等之类的
后来,我在大一快结束的时候,和另外两位大一参加了西安邀请赛,然后成功打铁……
紧接着是校赛ÿ