四川大学吴正博在第33次CSP认证考试中获得400分,第38次CSP认证考试将于6月8日举办,报名正在进行中。每年CSP高分考生(200分及以上)均可报名参加CCSP竞赛,CCF不定期邀请CSP高分和CCSP获奖选手分享经验,希望能够帮助同学们取得更大的进步。
非常欢迎更多CSP优秀学子分享自己的宝贵经验,联系:csp@ccf.org.cn
一、我的编程竞赛之路
我的编程之旅始于小学,源于“玩”。在贴吧上,我与一群志同道合的小伙伴交流Scratch和Python的心得,分享自制的简陋游戏。青少年时期的我逐渐意识到,编程不仅是兴趣,更是一座需要攀登的大厦。算法是通往更高楼层的阶梯,每掌握一个算法,就像推开一扇窗,看到更广阔的世界。
人类最擅长做的事情,除了语言与合作,就是在无意义中建构意义。小学阶段,我在贴吧上结交了一群好友(有几段友谊一直延续到现在),大家一块儿交流scratch和python的心得,给彼此的帖子加精,推销自己新出的游戏……如今看来,当时的消息是多么闭塞,真以为Minecraft的3D渲染是商业机密,以至于刚搓出一个低帧率的碰撞引擎就高兴得连觉都睡不好。
这很傻吗?青少年时期的我认为这很傻:与其去造几个重复的轮子,不如去多背几个实用的数据结构,好在考场上大杀四方。成年后的我,忽然觉得这不傻了,因为考场在世界眼中,就像我眼中的贴吧一样,只是一个温馨的童话。
以前那种纯粹的开心,现在很难再体验了。
四年级时候写的scratch
初中时,父母为我报名了算法培训课,我由此接触到信息学竞赛。竞赛让我明白,光靠“玩”远远不够。接触算法后,我逐渐意识到一个残酷的现实:如果编程只是光玩滑滑梯是没用的。想要成为一个合格的程序员,你必须走进前辈搭建好的大厦里,从底层往上爬。研究算法,就是为了登上更高的楼层,让你每次往窗外看,都会发出“啊,原来世界可以是这样”的感叹。算法学习需要系统钻研,就像一步步爬楼梯,缓慢但扎实。我不算天赋出众,但凭借坚持,逐步掌握了数据结构和算法,享受解题的成就感。
然而每个人的天赋不同。有的人腿长,爬的比别人快;有的人勤奋,在你睡觉的时候还在爬;还有的人视力好,发现角落里有电梯。于是越来越多的人选择坐电梯,不愿意自己爬了。但是,电梯也是有容量的呀,不可能所有人都坐上电梯。于是大厦的所有者开始建造额外的电梯。电梯越造越多,轿厢越来越挤,你被人流裹挟着往上,只能闻到浑浊的空气。
起初,我也是一步一步往上爬,身手算不得敏捷,也不算笨拙,慢悠悠的,甚至还有些闲暇去照顾窗前的绿萝。可最终,我还是没能抵抗住电梯的诱惑,跟朋友一起去坐了。
备考时留下的笔记
二、我为什么推荐CSP和算法竞赛?
有了竞赛这部电梯,我很快就比同龄人在编程上掌握了更多的知识。终于,经过无数个日日夜夜,大家拖着疲惫的身体从电梯里走出来。有几位老师已经在天台等候多时。他们给了我们每个人一张证书,然后用手指着天上。我一抬头,便久久无法低头。天上,有热气球,有飞机,还有火箭。我曾以为登顶就是故事的结局,可真正的旅途,才刚刚开始。不知道身边有多少朋友,也曾和我一样向往过天空,无奈电梯生活消磨了他们的好奇心与意志。于是纷纷掏出降落伞,像下饺子似的,纷纷往楼下跳去。过来人总是说:竞赛就是电梯,它能带你很快地到达天台,却会消磨你制作飞行器的兴趣。大厦不是全部,云端才是风景。竞赛,似乎成为了功利与绝望的代名词。
但我认为,坐电梯和爬楼梯一样,值得尊敬。坐电梯需要勇气,因为你要暂时离开既定轨道,去拥抱这个世界上与你一样拥有天赋和志向的人——你并不特殊。坐电梯的意义,不仅仅在于楼层的积累得到加速,更在于你遇到了更多的人。他们彼此拥有各自的心事,夜晚也曾偷偷哭泣,但见到你,只会露出最真挚的微笑:让我们一起打表和暴搜吧!陈嘉映曾问:多会一种记账的方式,会让自己更幸福吗?此刻,大家也一定很想问:多会一种“登高”的方式,会让自己更幸福吗?我无法给出回答。我只能说,我不后悔坐过电梯。如果人生可以重启,那我依然会选择坐电梯和选择算法竞赛。
三、我和CSP的故事
我对CSP的印象蛮深刻的,因为我参加普及组的那一年恰逢NOIP变为CSP。更巧的是,我两次参加竞赛都在同一个学校(甚至午饭也在同一个地方吃,好像是老乡鸡)。
考普及组那一次,我不怎么紧张,只吃了一根士力架,拿了一等奖;考提高组,我有点小紧张,吃了两包QQ糖,拿了二等奖;第33次CSP认证那回,因为有四川大学拔尖计划分数线要求,我特别紧张,吃了四块麦乐鸡,拿了400分。冥冥之中似有天意(当然,我建议大家考前合理饮食,防止溢出)。
CSP成绩单
说到第33次CSP认证,还有几段小插曲。
第三题是化学方程式配平,我在计算机导论课上曾经实现过一个功能更强的(支持多重括号和离子),很快就写完了。此时我看了第一眼样例(没错,之前敲代码的时候完全没看过样例),才发现题目只要求判断能否配平而不是给出具体系数,但是我写的版本是默认能配平的。于是花了双倍的时间去修改代码。穿白大褂的未必是医生,经验过于丰富了也未必是好事。
第四题需要用到集合的迭代器。我信心满满地提交,发现是零分。改了好几个版本也还是零分。直到我放弃做第五题,准备和第四题死磕到底时,才意外发现自己把第四题提交到第五题去了。大家在提交时千万不要因为过于兴奋而弄错题号。
四、备战CSP认证建议
CSP认证不仅是知识的考验,也是策略和心态的较量。从某种意义上说,CSP认证也是一种竞赛。因此,竞赛的备战技巧,同样适用于CSP认证。我以为,你若能做到如下三点,便能考出理想的分数。
明确自己的定位。我们常说“一步错,步步错,人生起起落落”。一步错的原因,往往不是能力不够,而是以小博大。因此,在刷题时,把能力范围内的题做好,不做能力以外的题。我个人比较反对“三四五各骗二十分”的策略。是的,这个策略很聪明,但与其这样做,不如多练第三题,争取把第三题拿满。
放低姿态。CSP认证是考试,不是插花,它有严格时限。就像写考场作文,不要字迹多么美观,只求端正;不要思想多么深奥,只求简洁。写代码也是一样,对于那些工程上的规范,在考场上大可抛却,因为我们只要自己看懂,不要别人看懂。不要堆砌刷题量,而要理解算法本质,确保在考场上灵活运用。这里推荐资源《算法竞赛入门经典》(刘汝佳、陈锋)、OI Wiki,适合系统算法学习。
良好作息。考前避免熬夜,早饭午饭准点吃,,确保精神状态,考试中避免紧张,适时深呼吸以放松思维,带入纸质笔记,只记录验证过的常见错误,合理分配时间,先确保简单题目满分,再挑战高难题目
五、结语
算法竞赛是一部电梯,带我快速登上编程的高楼,也让我结识志同道合的伙伴,感受学习的纯粹与快乐。无论结果如何,这段旅程都让我更勇敢、更坚韧。感谢CCF和四川大学学生分会提供这次分享机会。我强烈推荐对编程感兴趣的同学参与CSP认证,这是一个深度学习、孤独坚守却又充满成就感的过程。无论你选择爬楼梯还是坐电梯,都请勇敢迈出第一步,探索算法世界的美妙!