《“绝地反击”之后的反思》
第一次参加省赛,感受非常深刻!
学校派的的队伍有13支,跟其他高校比较,应该属于派的比较多的高校,
ps:由于队伍是打星号去参赛,属于友情参赛,正式到现场发现座位上的队伍名称搞错了,我们就将错就错,干脆把正式队的名字“绝地反击”当作队伍的名字了
先说一下热身赛吧,比赛前。就商量了对策,我负责主敲,队友cb和ljf负责看题,发下题目后,立刻发现A题是道表达式求值的题,需要字符串处理,ljf看来一遍,说他之前在oj做过类似的题,于是我们就先让他在纸上写出大概的思路,我则打开编译器,敲好必须的头文件,和一些必要的模板,过了一会,队友cb立刻读出了B题,跟我说了一下题意,发现是到签到题,五分钟左右敲出,测试了样例过了,点击submit,1Y
之后,ljf说可以敲A题,于是ljf开始敲A题,我和cb则在两边帮队友检查代码有没有错的地方,这中间大概过了20多分钟,调了又调,终于敲出了代码,把样例和出数据过了,点击submit,1Y!
之后又各种姿势测各种环境,测各种结果,中间过程PC^2判题系统各种跪啊(估计是看大家交题热情太高,一时承受不住~~)
最终,两道题都1Y,到了18:00,热身赛就这样结束了
上午9:00-14:00
正式赛:一拿到题目之后,离准时开赛还有一段时间,我们队伍没有像其他队伍一样,干坐着,而是把在分析前几届省赛常出的算法题型的模板赶紧打到编译器里,这个做法是在杭州电子科技大学的举办的比赛上从身边的队伍哪里学到的,这个一方面可以让主代码手立刻进入状态,又可以在模板上节约时间,
比赛正式开始,拆开包装,我们把试题分成三份,一个从前往后看,一个从中间看,最后一个从后看,发现两道英文之后,立刻交换给读题能力比较强的队友,这样安排是考虑队友整体的读题水平都可以,如果队友整体读题理解水平有一定的差异,可以选择一人主负责读题,但是要读准,抓住题目的关键,有时候,题目只要看数据,就可以把握整个题目的思路和做法,读题开始,cb发现A题是昨天热身赛的强化版,把题目关键和我们说了一下,ljf说只要把昨天的代码稍微改一下就可以,我们立刻找到昨天A题的打印,ljf开始做A题,cb继续看题,我则在一边给队友检查代码 ,敲了大概十几分钟,样例测试没有错,我想了一会,出了一组数据,测试了一下,发现不对,于是又认真的从头到尾检查了一下,最后果然发现有个地方写错了,立马改正过来,测试数据对了,点击提交,返回Yes,第一道1Y,有点激动,我们看了时间,这个时候已经过去将近40分钟,我们立刻看下一道题,这时候cb看懂了F题,把题意给我们说了,立刻感觉是到签到题,果断上去敲之,很快就敲出来了,检查了一遍感觉没有问题,把样例测了一遍,出乎意料的是,本来想象的是一次通过,竟然样例没有过!,我立刻冷静下来,把题目从新看来一遍,确定题意没有弄错的情况下,仔细检查了一遍代码,仍然没有发现错误出现在哪里,这个时候比较无语,我叫cb帮我看一下,cb一看,立刻指出了错误,原来是变量定义的位置错了,(自己看半天发现不了错误,队友一看就发现了,这种情况可能是自己的思维一直局限在题目其他的地方,而恰恰没有关注真正的bug所在!)改正之后,检查其他无误之后,又测试了几组数据,没有问题之后,确定提交,看到返回Yes,松了一口气。
这个时候大概过去了1个多小时,这个时候,ljf读懂了另一道题,给我们说是小白书上的原题变形,我们把题目看了一遍,发现果然差不多,于是把代码敲上去,结合题意处理了一下空格和其他注意的地方,提交1Y,三道题了,节奏开始稳步推进,我把刚开始的看的题给队友说了一遍,是道最大化平均值,其实自己看完感觉要用到二分搜索,问了两个队友,也没有思路,大家陷入思索当中,,,我突然有了想法,感觉用二分搜索实现,上去敲了二十几行,发现有个关键地方忘记怎么写了,后来反思这个是我的失误,思路没有完全理清,就上去写,这个忘记的关键点当时怎么想也没有回忆起来,我立刻想到带的模板,查了一遍,比较失望没有找到自己希望的资料,正在纠结当中,,cb推了一会说他有思路,我们问他如何做,他说可以用前缀和来做,我立刻问道如何处理平均值的最大化?,他说可以开两个数组,一个维护前缀和,一个记录前缀和的平均值,每次判断取最大值就可以了,征求ljf的意见,感觉没有问题,cb开始敲题,在敲的过程中,我们发现cb的一个比较好的习惯是会调试,多写几个printf,把过程结果随时输出来,对代码调试很有帮助,此题我看有戏,于是在一边查代码,过了一会,代码敲出了,处理了几个边界,把样例一测,竟然都对!我们没有立即提交。而是想了几组数据,发现测试都对,然后又小心翼翼的检查了其他地方,确保万无一失了,果断点击了提交按钮,返回1Y。过了该题后,我们没有丝毫停留,此时ljf发现一道题可以用网络流做,于是他就在一遍敲,我和cb共同又开 了另一道题,读懂之后,感觉是道裸的最小生成树(其实),然后又仔细的再看了一遍题意,推了一遍样例,发现就是这样之后,一人把题意讲给剩下的队友,我赶紧上去敲模板,敲完之后,发现题目没有想象的那么简单,要用到并查集带权判断,浪费了将近1个小时,最后这道题还是搞出来了,但是还是因为相关算法知识点平时练的太少,时间浪费太多,ljf平时擅长图论,此题主要他敲,我在一遍帮代码,不过最后样例过了的同时,我们毫不犹豫的点击了提交,结果依旧返回令人信服的Yes,最后,
在比赛结束的前30分钟,我们依旧没有放弃,又开了一道题,最后一道是一个最小换乘的问题,当时我看完,第一思路可以最短路了,ljf一开始说可以构造网络流,我听完,感觉没有必要用到网络流,在近20分钟,ljf突然又想到了另一种方法,这次我们没有询问具体如何思路,干脆让他直接敲,在最后的20分钟,旁边的队伍都已经坐不住的坐不住,准备走的准备走,我们三人围住一人旁若无人的紧张的敲题,倒数10分钟,我们过了第一组样例,但是没有过第二组,倒数5分钟,我们仍然没有过第二组样例,依旧在调试代码,这个时候,大家的脸上却没有显示丝毫的紧张,因为我们已然完全沉浸在解题的氛围中,感觉达到了一种全然忘我的境界了,最后几分钟,感觉时间过得飞快!比赛结束了,五道题,全部1Y,最后看了一下排名,应该是个银牌
【反思】
(1)这次比赛题目比较数据水了,但是没冲到金牌区域,比较遗憾,
(2)基本上纯考算法的很少,基本完全考代码能力!暴露出代码能力还是有很大提升空间!
(3)平时练的太少,手速不够快,比较谨慎,不够果断!
还是太弱,路还很长!
2015/5/12 00:13
原文地址:http://blog.csdn.net/u013050857/article/details/45649009