ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

从报名到复盘:一名大一新生的编程新生赛全记录

从报名到复盘:一名大一新生的编程新生赛全记录 1. 从报名那一刻起我就知道这不会是一次轻松的体验1.1 为什么我会写一份“新生赛自述”打开比赛报名表的时候我犹豫了大概十分钟。倒不是担心拿不到名次——我这种刚把for循环写顺手的水平本来也不敢想名次——真正让我犹豫的是另一个问题如果只是体验一下比完就散了我还能留下什么后来我给自己定了个规矩从报名到比赛整个过程必须写下来能写多少写多少。于是就有了你现在看到的这篇标题挂着【自述】后面还加了“更新中”。这段自述其实没有任何排版上的讲究我只是想要大一这一年留下的东西不只有一张成绩单还有我自己到底在想什么、卡在什么地方、后来是怎么一步一步往前挪的。如果你也是第一次参加新生赛或者是班群里那种“要不卷一下试试”的选手这篇记录也许会帮你提前看清赛道长什么样不只是题目难不难还包括备赛一个月大概要投入多少时间比赛当天会不会紧张到读不进去题以及赛后怎么复盘才算真没有白比。1.2 为什么是“更新中”而不是一篇大总结我最怕读那种“岁月静好”式复盘文章比赛结束、拿奖、感谢老师、继续努力一气呵成。但真实过程根本不是这样。我比赛前一周还在为一道字符串题烦躁比赛过程中有接近一小时处于自我怀疑状态赛后头两天甚至不太想碰题库。这些乱糟糟的细节反而是最值得记录的东西。所以我坚持用“更新中”来命名事情没结束水平还在变与其写成一份定了稿的回忆录不如当成一条持续有补丁的开发日志。这种写法还有一个非常实际的作用用一个公开系列倒逼自己投入。每次想偷懒的时候我就想这周要是又不更新下一次比赛前“自述”就要断更了。过去一个多月我就是靠这个心理撑住每周训练量的。你不一定需要把记录发出来但给自己拉一条时间线哪怕只是在备忘录里随手记几笔也会让备赛过程变得更有方向。很多时候写下“今天没练”这句话本身就比练习更让人清醒。1.3 这篇自述适合谁读完能拿什么简单说适合三类人。第一类是已经在报名表边缘犹豫的大一新生你可以把它当一份真实的前线情报看看要付多少时间成本第二类是备赛过程中容易自我怀疑的人你会看到一个同样菜过的人怎么不慌不忙地往前蹭第三类是打算把“新生赛”写成故事的写作者这篇记录里提到的时间线、失误细节和心路历程可以作为你构建角色的素材库。我想做的从不是把某一次失败或成功包装成热血爽文而是诚实地记录一场新生赛如何逼出一个新手身上的全部短板。你可能在比赛里遇到和我完全不同的题但那些焦虑、卡壳、反反复复试错的感觉是共通的。能提前知道这些感觉会发生本身就是一种储备。2. 备赛六周我踩过的每一块石头都被写进了笔记2.1 我的真实起点别被“大一新生”四个字骗了学院新生群里总有人问新生赛是不是给高中搞过竞赛的人准备的。我的答案是不完全是但差距真实存在。我高中的信息课基本停留在打字练习大学的C语言课进度又平缓。报名时我的水平大概是会写变量、分支、循环能看懂数组知道函数要有返回类型但一遇到“多组输入”就要翻半天课件。最尴尬的是有一天调试了半小时最后发现自己只是把输出字符的大小写搞反了。这里想给刚站到起点的你划第一个重点知道得少不可怕可怕的是用一句“我不会”就给自己判了出局。新生赛的题目设计通常照顾刚学过一个学期的学生签到题基本都是简单模拟和数学计算真正决定排名上限的往往不是你能不能全AC而是你会不会在中等难度的题上稳定拿分。赛后我看了一眼榜单上部发现拿高分的人里至少有一半不是竞赛出身他们只是比我更早开始练也比我更稳定地练下去。2.2 六个星期我给自己排了一张训练表比赛在周六上午我提前一个半月决定报名。第一周只做一件事把语法漏洞补齐第二周用简单题练基本功第三、四周刷模拟和枚举第五、六周才敢碰二分、贪心、前缀和这类看起来像“算法”的东西。下面这张表当时贴在宿舍墙上也和室友共享了一份训练区间训练主题题目类型每周安排第1-2周语法补漏输入输出、循环、数组、字符串基础周一、三、五晚上各1小时第3-4周简单题形成手感模拟、排序、枚举周二、四各1.5小时周六一下午第5-6周专项突破二分、贪心、前缀和、简单动规每天1题周六一场2小时模拟赛这张表看起来很常规执行起来比想象中难很多。第一周的“语法补漏”不是重看教材而是把所有例题重新敲一遍每道题都要求编译一次性通过。听起来很笨但它把我的赛场心理下限拉高了至少不会因为连main函数都写错而当场慌神。第三周我开始用OJ的“入门”标签刷题每天做完题后把题解和自己的思路对一遍再用自己的话写进笔记。这个习惯让比赛前我就见过了十几类常见题型的套路。第五周开始记录做题时间简单题超过20分钟就停下来问自己到底是读题慢、思路不清还是代码实现有问题。这个过程比多刷十道题更有用。每晚保存记录的时候我能清楚看到自己今天比昨天多稳住了几道题也能看到哪些知识点只是“见过”并没有真正变成手速。2.3 资料选择我踩过的三个坑第一个坑叫收藏夹积灰。我一开始收藏了很多算法书结果两周时间只读完第一章。后来我换成“按标签刷题”的思路选一个稳定可用的在线评测系统从“入门”标签开始每天只做一道看得懂题解的题并且强制复述题解。初期最重要的不是知识面的宽度而是连续完成的长度正反馈才是新手坚持下去的真正燃料。第二个坑叫“看题解等于会做”。我有一阵每次看不懂就直接点开题解复制过去就跑结果比赛前一周发现换一道类似的题我还是没有思路。后来我改成看题解只看思路提示然后合上题解自己把代码从零敲出来。哪怕最终代码长得和题解一样肌肉记忆也是自己的。第三个坑是忽视数据范围。新生赛的题很爱用超过int范围的数据做陷阱我赛前第一次被long long问题卡住时整个人都懵了。从那以后只要题目里出现10^9这种量级我就会默认使用long long。多组输入也很常见从最简单的情况开始就要养成模板习惯#include bits/stdc.h using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); long long a, b; while (cin a b) { cout a b \n; } return 0; }这里多说一句为什么很多人不写这两句加速代码cin默认会和C语言的scanf输入流保持同步导致读入变慢。做新生赛时题目数据规模可能不大但养成这个习惯以后打正式一点的比赛就不会在输入输出上多花几倍时间。这段代码也是我赛前唯一会默写的“模板”。3. 比赛当天三小时浓缩成的时间线、压力和多次推倒重来3.1 开赛前的十分钟我没在背模板比赛那天上午我提前三十分钟到机房。大半选手都在低头翻自己的小本子我也翻出了一个小本子但上面记的不是模板而是三条提醒第一先读题别急着写第二每道题交之前都先算一遍极端数据第三如果卡住超过半小时就起来走一圈。这三条是我赛前给自己定的“应急处置手册”。事实证明它们比任何模板都救命。赛前背模板当然有意义但如果把临场精力花在回忆模板上反而容易忽略真正重要的题目理解。入场之后我还做了一件事把每道题可能在哪个知识点方向上挨个扫了一遍顺便确认了题目页面的字体、编译器和提交按钮的位置。这些细琐的准备看起来没用却能极大减少赛场上的“意外感”。比赛真正考验的往往不是你会多少东西而是你在紧张状态下能把多少平时发挥出来。我还给键盘上贴了张便利贴写的是“先看数据范围”因为这是我赛前犯过最多的低级错误。3.2 前90分钟从签到题写成了过山车比赛正式开始以后我没有从第一题开始一路做到底而是先把八道题从头到尾快速翻一遍再回到最前面开始做。A题是一道很基础的整数幂次判断我五分钟写完交上去却等来一个红色的错误提示。那一瞬间大脑是空白的后来才发现题目里包含0次方特判循环写法如果不单独处理就会出错。改掉这个小坑之后终于拿到了熟悉的绿色反馈。开赛二十分钟我的收获很明确看得懂题目不等于想得全边界。接下来的B题和C题比A题难度大一点。B题是排序后的相邻差值C题是日期合法性判断。日期题最折磨因为需要同时判断闰年、大小月、二月的最后一天流程一多就容易改出新的bug。我大概重写了三版最终在提交之前手动加了四个测试样例才敢交。那次经历让我彻底记住一件事手造样例永远比事后拍大腿有用。比赛不是靠祈祷而是靠验证。那段时间心态很像坐过山车每看到一次Accepted就想欢呼每次看到红色反例又觉得嘴里的零食都不香了。但说实话我最惊喜的不是AC的数量而是自己终于能做到“每一份代码提交前都被验证过”。对新手来说这本身就是从“随便写写”到“认真对待”的分水岭。3.3 90分钟后当心态开始塌方我把目标从“AC”改成“拿分”比赛过半我面前还剩好几道题时间剩得不多。E题是一道典型的贪心我盯着看了十分钟完全不知道从哪下手。那一刻我做的第一件事不是硬刚而是强迫自己把手放在键盘上停下然后做了个决定先不碰E转头去看F。F题的包装复杂但剥掉壳之后其实是个二维前缀和因为我知道这个知识点所以慢慢写出了一个可以跑小数据范围的代码拿到部分分。这里想认真说一句新生赛并不要求每道题都全对。很多题目会按数据点给部分分能拿到的部分分加起来往往已经足够让排名变得好看。不要被“AC”这个念头绑架先抢分再谈全对这是比赛中后期最重要的策略转变。那天我最后的成绩算不上耀眼但能坚持到最后一刻的原因恰恰是中途放弃了“全都会”的执念。把比赛时间线整理出来会更清楚比赛时间我在做什么0-18分钟快速翻题攻克A题处理0次方特判后AC18-45分钟B题ACC题第一次WA标记待回看45-90分钟C题重写第三版并ACD题漏看“字典序”只拿部分分90-150分钟E题卡住转F题用二维前缀和拿部分分150-180分钟G题尝试暴力枚举稳定拿到前三组小样例分4. 赛后复盘拿到的不是奖状而是一份“问题清单”4.1 把比赛过程摊开来看比赛结束系统出了排名。名次比我来之前预想的好但远没到可以骄傲的程度。真正有价值的部分是把每道题的状态拉出来重新看一遍因为我发现日常训练里完全看不到的问题在比赛中全暴露了。题号预估难度尝试次数最终状态暴露出的问题A简单3次Accepted边界特判不全0次方漏掉B简单1次Accepted多组输入模板已掌握C中等3次Accepted逻辑分支太绕重构后才稳定D中等1次部分分题目里的“字典序”要求被漏读E较难0次未提交贪心模型套不上场景F中等2次部分分时间不足且被E题打乱节奏G较难1次部分分暴力枚举只拿小数据分H较难0次未提交时间耗尽基本没看这张表让我看见了训练方式的缺陷。我平时刷题喜欢“会做了就下一道”从不记录自己究竟卡在读题、卡在建模还是卡在输出比赛一旦紧张这些缺陷会全部叠加在一起爆发。赛后复盘最有价值的产出不是记住某道题怎么做而是知道自己下次该往哪里使劲。对我来说这份问题清单比名次更能刺激我继续训练。4.2 三个必须写进笔记的根因第一个根因是读题习惯。D题题干里有一句“如果多组答案输出字典序最小的”我用眼睛扫过去了结果代码实现里连字典序这个概念都没出现。错失这几分之后我给自己定了新规矩每次动笔之前用自己的话把题目复述一遍特别是带限制条件的小字部分。这个习惯后来也救过我很多次因为很多“隐藏条件”就藏在你根本不会回头看的位置。第二个根因是模型迁移能力。E题的贪心模型我在训练里确实见过只是题目换了一层生活化包装我就不敢往下写。后来我给自己设计了一个“一句话归档法”每做完一道题必须用一句话概括它考的是什么模型比如“这个题是区间选点的变体”。积累足够多模型后比赛时看到新题的第一反应就会从“没见过”变成“长得像谁”。第三个根因是时间分配。我在A题和C题上花的时间明显超标导致后半程缺少整块时间去啃真正能拉开差距的题。这个问题的解法不是“下次快一点”而是赛前先做目标规划哪几道题必须拿满哪几道题只用部分分保底剩下时间集中打哪一道。有了这个计划比赛时就不会被一道题拖死。4.3 “更新中”的第一步把问题清单变成训练计划既然叫“更新中”复盘就不能只是一篇总结。我在赛后第三天把这些结论转成了下一阶段的训练安排每周一、三读题训练每道题先复述题意再动手训练识别题干里的隐藏条件。每周二、四模型归纳训练刷题时强制写下题型标签并归并到自己的“一句话归档”笔记里。每周六上午全真模拟两小时严格使用比赛同样的时限、工具和评分规则。每次模拟赛后更新一段记录内容包括做题用时、卡住点、情绪波动和下一次要修的地方。这个过程就像游戏存档你每次复盘都会生成一个新的存档点下次训练直接从存档点继续而不是每次从零开始。保持这个循环比赛前疯狂刷五十道题更容易带来真正的变化。而且这种“复盘-转化-再复盘”的节奏会让你慢慢从被动做题变成主动管理自己的学习进度。5. 给下一届新生的几条实在建议以及我接下来要更新的方向5.1 如果能回到报名前一天我会提前知道四件事第一件事先保证拿分再追求AC。新生赛一定有送分题也一定有拉开差距的难题。把送分题稳稳拿住学会用部分分去薅中等题的分数远远好过死磕一道自己搞不定的难题。我这次最大的进步就是接受自己不是上来就能“全都会”的人。想清楚这一点后比赛每一分钟都花得更值了。第二件事备赛时就要按真实比赛环境训练。我一开始刷题时不断网、不限制时间导致比赛现场看到计时器就莫名焦虑。后来每周六安排一次完整模拟赛中途不许暂停、不许查资料两小时准时收卷这种感觉很快就被脱敏了。模拟赛的分数不重要重要的是把你的比赛节奏练出来。你会在模拟赛里提前发现“原来自己第40分钟会饿”“原来第90分钟会坐立不安”这些都属于比赛的一部分。第三件事留一份自己的错题本而不只是收藏别人的题解。错题本不要求工整但每一条至少要写清楚三块当时为什么错、正确思路是什么、以后怎么避免。这份笔记不是给别人看的它是你比赛前一晚最踏实的复习资料。比赛前翻错题本比临时刷题更容易入脑因为每条都是你自己踩过的真实教训。第四件事提交之前手造几个边界样例。题目给的样例只是最低保障真正容易翻车的地方是数组越界、空输入、数据最大或最小这些边界情况。每次多花两分钟造几个样例验证你的WA数量会肉眼可见地减少。别人在赛后懊恼“当时怎么没想到”你在赛中就已经把这条路堵死了.5.2 接下来我打算让这篇自述怎么往前走比赛并没有成为我学习编程之路的终点。当前我的进度是每周保持两场模拟训练整理一份不断变厚的错题本并把新生赛暴露出的每一项问题逐条勾掉。下一次更新大概率会以“新生赛【自述更新中第二个月】”的形式出现里面会有我的新训练记录、又一次模拟赛的事故现场以及我继续踩到的新坑。你如果感兴趣可以把它当成一档持续更新的存档连载来看。我会在每个周六晚上固定打开这个文档把本周的训练数据、心态变化、做题记录都追加进去。更新内容不会太长但会一直保持真实。如果某周我偷懒了我也只会如实写上“这周只练了两天”不会假装自己很勤奋。因为自述的意义本来就不是表演而是让未来的自己看到真实轨迹。最后想对准备报名下一场比赛的朋友说一句如果这篇自述里有一句话值得带走大概是“现在就记录”。记录你此刻有多菜一点都不丢人重要的是让一个月后的自己看见变化。我在写这个系列的时候也一直在等这个变化。下一次更新我们场上见。
返回列表