今天下午在青大的天梯赛由于服务器崩溃的原因向后推迟了70分钟,等待期间也认识了旁边两个人,左边是山财15级男生,右边是山理工13级男生,拿过去年区域赛青岛赛区金奖,他当时做了六道题,666,我打心底希望这样的人不要参加今年省赛,否则压力真的很大。等待的那一个小时敲了四五个板子:kruskal、并查集、kpm、dijkstra等,当时想的是反正闲在那就当是练练手熟悉一下键盘吧,结果果然一个都没用上。
在去的路上FC在群里说过二三阶段每道题前五个做出来的可以给队伍加分,我当时觉得第二阶段应该会考各种算法,感觉自己就算先看第二阶段也不会是前五个出题的,更不用说第三阶段,再加上之前ccf打的那点破分让我受了不小的刺激,所以我决定还是从第一阶段开始做。
第一阶段的题都是水题,连打印“Hello World”打印“A+B”都有,但是八道水题还是用了65分钟左右才拿到满分。今晚看了看那八道题里面,有五道可以说是想都不用想闭着眼睛写就行的题:L1-3(输出第2个和第4个字符串,如果这两个串存在的话)、L1-4(打印A+B)、L1-5(按规定的三种格式分情况打印“A/B=商”)、L1-6(打印”Hello World”)、L1-8(给定公式输出计算结果),这五道题加上看题和敲的时间其实手速快一点的话也就二十分钟吧。第一阶段剩下三道题,L1-1其实也是水题,计算一个数中不同数字的个数,L1-2就是简单的统计数字出现次数。回到学校后我看了看自己的提交记录,第一阶段平均每道题用时五分钟左右,说实话这种超水的题(平时训练赛根本都不稀罕出的题目)用的时间真的是太久了。我觉得导致自己第一阶段做题慢的原因,一是敲键盘的手速真的不行,都大二了还是做不到盲打,这个平时没太注意,但是关键时刻真的会很影响时间的。还有就是每道题都是得了满分时才肯做下一题,其实有时候那少的一分两分真的可以不要了,与其花时间改代码求得那一两分,还不如为看后面的题节省时间,即使后面的题得不了满分,但时间够得话我还是有信心混十几分的。不同类型的比赛真的得采取不用的方法策略应对,这方面我还是经验太少,太按部就班的做题了。
第二阶段是根据通过的人数和通过率选择的做题顺序,说实话在打比赛之前我以为第二阶段应该是四道比较难的算法题,考各种算法数据结构之类的。是我自己一开始把它想的太难了,真正做的时候才发现四道里的三道水题都太水了。第一题就是一个很水的题,应该也算不上贪心,但是在处理输入为奇数和偶数时想的有点多了,再加上可能有点心急了吧,浪费了一些时间。第三题就是统计次数,输出id值未出现在列表中且value大于平均值的id。这两道题用不到什么算法或者技巧,直接写就行。第四题总算是考了数据结构,简单的树bfs或者dfs都行,我采用的是bfs,没什么难度,敲完也就过了。就是题意一开始有个地方理解错了,所以出不来样例答案,仔细看了一下题目描述,改了一下计算公式,然后就过了,比平时训练题简单很多很多的一个树。至于第三题,我看它过的很少,而第三阶段第一题过的很多,那时候还剩不到一个小时,所以我扫了一眼第三题题意一下没思路就去做L3-1了。
L3-1是一道物理题,我一开始是很崩溃的,之前两次大物考试每场都刷新了我上学来考试成绩的最低值。所以我自然而然认为自己物理很渣,说实话一开始真的是硬着头皮强行看得,因为就其他三道题AC的人数来说,也不是我能做的。经过各种纠结和不情愿的读题后,真正耐下心来做时发现,其实就是一个简单的斜抛问题。高中老师都讲烂了的物理模型。我一下就对自己有了信心,我觉得自己能做出来这道题。然后就开始按高中的步骤列各种公式,尽量用已知量代替未知量。反复求了两遍确定自己没求错时又蒙了,化简后有两个未知量,初始的水平速度Vx和垂直速度Vy,而已知的只有V,我一下又不知道怎么求了。现在想想真是给跪了,我当时真的是太太太太太脑残了,就觉得高中题该按高中方法解。过了大约二十分钟,就跟突然间触电了似的,脑海中对自己说了句话“妈的求导解最大值啊”(当时脑海里真的是蹦出来这句话,虽然听起来有些爆粗口了)。我就赶紧用Vx表示Vy然后求导取得最大值公式。求导得到公式用了不到三分钟,敲代码用了两分钟左右吧,一看时间还有十分钟就赶紧提交了(因为当时有人提醒最后十分钟提交的结果服务器可能hold不住,也许交不上)。我当时手都是抖得,我知道自己推出来公式了,就怕交不上。还好交上了,有两组数据没过,改了精度后还有一组。最后我知道自己哪里错了,可是最后一分钟交上去没给判,其实是觉得有点可惜的。推公式时太脑残了,浪费了太多时间。推不出来的期间还去L3-3打印了句“no solution”蹭了三分。
总分205,一开始对于分数个人还是比较满意的,但是真的在写总结回想整个过程时还是觉得遗憾,有太多地方可以节约时间,可以做的更好。我晚上看了一下没做的其他题,至少L3-3如果有时间的话我是有信心得至少一半的分数的。
总的来说,这次收获还是很大的。首先,让我对自己重新建立了信心,其实我还是可以做到做好的,虽然明明可以更好。没办法,之前一年把太多精力放在了不必要的人和事情上,自己做的选择就该承担它带来的一切后果(即使是不好的)。我不后悔,但是现在我必须花更多的时间来弥补之前浪费掉的时间,必须更努力才可能追赶上队里大神们的脚步。其次,在赛场上,做题时的手速真的是很关键的,我必须得会快速盲打而不是像现在这样看着键盘打。还有就是,你付出的精力与时间,你的一切努力与坚持都会是有回报的,不是在这里,就是在未来。最近我学了很多算法模型,也许在二发他们眼里都是很简单的东西,但是对我来说就不一定了。比如在去比赛的前一天,我做了一些cccc练习题,也看了很多题每道题都会想想解法,因为时间原因没有全部自己敲一遍。晚上临睡前又对着电脑敲了一遍kruskal、并查集、kpm、dijkstra这几个最近遇到比较多的算法,第二天在等待比赛开始时又敲了一遍,现在是想忘都忘不掉的。虽然比赛时没用上,但谁知道以后会不会用上呢。
虽然写着写着就有些不知所云了,但这次去青大的比赛真的让我想了很多,包括在车上也和志同道合的朋友(或者说是我一心想学习想跟上他步伐的榜样)聊了很多,包括ACM,包括人生观价值观,聊了很多很多。我相信,只要在努力在改变在进步,就是好的。不想什么奖牌荣耀之类的东西,我很珍惜现在在队里拥有的开括眼界提高自我的机会,也很喜欢现在这个有目标、根据自己的抉择一心一意做着自己想做的事情的自己。希望未来,少些遗憾,多些成长。