• 微信公众号:美女很有趣。 工作之余,放松一下,关注即送10G+美女照片!

蒟蒻的两年程序竞赛经验

互联网 diligentman 2周前 (04-29) 7次浏览

2021 年 4 月 28 日,蓝桥杯成绩出来了,c++ 组 b 组省一。不过大学时间也所剩无几,所以想写一篇经验贴,供同专业的学弟学妹们参考。

我首次基础编程是大一下学期的 VB 课 (很难想象 2019 年还在学 VB,不过低一级的学弟学妹们就学 Python 了)。VB 课只学习了最基本的编程,包括顺序结构、循环结构、分支结构以及自己写函数。

随后在大一暑假我自学了 C 语言,仅限于用 C 语言实验顺序结构、循环结构、分支结构。期间硬啃谭浩强老师的那本红书,参考过浙江大学翁恺老师的 mooc。毫无疑问,这是没有效率也无意义的自学,如果只是看看书编程是学不会的。幸好在大二开学之后教授我 C 语言的吴老师让我自己去刷 PTA 乙级的真题,开启了我学编程的新大门(感谢吴老师)。

因为大二上学期我着手去做了一个小课题,第一任务是搞研究写论文,因此刷题速度缓慢,大概一个学期过去了仅仅刷了五六十道 PTA 乙级的真题。刷题是痛苦的,特别是一开始什么都不懂的情况下。每次遇到不会的题都只能去 CSDN 找题解,看别人的代码找思路。但是坚持下来效果也是不错的,在2019 年蓝桥杯校级模拟赛获得了全校第 4 的成绩 (很多大佬没有打,题目也简单,几乎不涉及什么算法和数据结构)。

大二寒假的时候我仍然在写我的论文(写论文真的太难了呜呜呜),期间在学数据结构。数据结构我一开始也是硬啃书,后来发现这玩意儿光看书是真的看不懂,所以自学期间参考了浙江大学陈越老师的 mooc 以及青岛大学的一个 mooc。在学习数据结构期间,痴迷于徒手硬写指针,一度感叹为什么这东西这么麻烦,并死磕 PAT 上面的数据结构习题集,到最后大约是哈希表,红黑树那一部分没有做,剩下的都用数据结构书上的方法做出来了。

寒假结束,大二下学期课业负担极重,并且在蓝桥杯官网上的习题集刷题并不顺利,所以编程的练习停滞不前。期末考试前考了蓝桥杯,感觉自己都会做,但出来只有省二,具体原因我在后面会说。

暑假期间我仍然没有写代码,在干什么呢?我改了一暑假论文,和审稿人斗智斗勇。大三上学期我写代码了吗?没有。如果说有的话,那就是打了 2020 年的天梯赛模拟赛和正赛 (我是在比赛练习写代码的个人练习生)。所以 2020 年的天梯赛只打了不到 100 分,L2 直接爆 0。

说了这么多废话了,重点来了

为了 2021 年的蓝桥杯和天梯赛,我大三寒假期间必须要做点什么了,比赛总是惨淡收尾,那也太菜了。所以我在寒假期间刷了洛谷官方题单
蒟蒻的两年程序竞赛经验
大概是刷了这么多题。那么这时候一定有人问了,你怎么刷这么多入门的题?是不是在刷 AC 率?

我郑重地回答,不是,因为大半年没有认真写过代码的我真的不会了,我必须要从最简单的题开始找刷题的感觉。下面我就详细写一写我从今年 1 月份到 4 月份的刷题经验。

首先,我学习了 c++。如果你要打程序竞赛,请你一定要学习 c++,因为不会 STL 和会 STL 就是天上地下。从 c 语言到 c++ 我大概多学习了输入输出,for循环的小细节,结构体变量的异同以及 STL 库。STL 库我是跟着 B 站上的黑马程序员的视频学的,包括 string, vector, list, queue, stack, set, map 这几个容器以及 algorithm 这个算法库中的常用算法。与此同时我刷完了洛谷入门题单。

随后,我开始刷洛谷算法 1-x 系列的题单,其中二分查找没有刷,剩下的除了太难的都刷了。刷完这些我终于知道了我为什么 2020 蓝桥杯只有省二了,什么题都是暴力模拟,诚然能拿一部分分,不用担心爆零,但是也绝对走不远。没有人讲自己刷这些题其实是很困难的,进度也不快,每次遇到不会的知识模块都在洛谷的题解里面学习新知识。贵在坚持。

刷完这些之后我开始用我学到的 STL 容器刷洛谷数据结构系列题目,注意,和我之前刷 PAT 数据结构算法题不一样,我再也没有写过指针,要么用数组模拟,要么用 STL 容器。 STL 固然会慢一些,但是方法不会出错,写起来也更加快了。

刷这些的时候应该已经开学了,这学期我刷完洛谷动态规划的几个题单之后我就开始刷蓝桥杯真题,在 Acwing 和 new oj 这两个网站,蓝桥杯官方那个是假的,没有必要去刷。大概刷完近几年蓝桥杯真题之后蓝桥杯也就来了,2021蓝桥杯很难,我打完比赛整个人心态也崩了,但是成绩出来之后结果还是不错的,说明刷题还是有一定的效果的。

时间又很快到了天梯赛,这一届天梯赛题较为简单(不会的题我也是真不会,罚坐半小时),所以打的也不错,达到个人预期成果。而这次天梯赛打的不错我觉得在于我刷完了前几年 大部分天梯赛真题、洛谷官方题单的入门模拟题,基础和刷题都很重要。

说的可能有些混乱,也有点没有条理,下面我总结一下。

  1. 请一定重视基础,编程语言的基础以及编程竞赛的基础,如果感觉基础不好,请去刷题。直到你刷简单题又快又对的时候,恭喜你,你的基础过关了。
  2. 请重视数据结构,你可以不会写指针,不会写链式数据结构(当然考试的时候请忘掉我说的两个不会,也别喷我,因为我数据结构 99,现在也是真的不会写),但是请你一定要搞懂算法竞赛需要的数据结构的原理,因为你可以借助 STL 库实现大部分数据结构。
  3. 请重视算法的基础,最基本的算法构成了一道道题解的基础,你连最基础的算法都掌握不了(BFS,DFS, 贪心,简单的动态规划等等)你用什么去写难题呢?洛谷官方题单不错,对于不打 ACM,专注于蓝桥杯和天梯赛的同学可以考虑。
  4. 请坚持刷题,洛谷,PTA,Acwing,new oj都是很好的平台,对于我们绝大部分人来说编程练习往往是正反馈的,练了就有,不练就无,远远达不到 ACMer 的瓶颈期。我从学习编程到现在可能也就刷过六七百道题,这点训练量一个暑假+一个寒假差不多就能出来。
  5. 请多交流,闭门造车是不可取的,可能别人随口一句就能节省你半天的时间。

拿奖不难,拿有含金量的奖不简单,想好自己想要的是什么,再做下一步。最后,祝学弟学妹们在程序比赛上越走越远,编程比赛的经历一定会受益终身。

2021年04月28日
贾梓航


程序员灯塔
转载请注明原文链接:蒟蒻的两年程序竞赛经验
喜欢 (0)