2011春“东林杯”ACM/ICPC黑龙江省赛总结

来源:互联网 发布:java web 日志框架 编辑:程序博客网 时间:2024/06/10 02:14

谈谈初次省赛

轻轻地我走了,正如我轻轻地来,我挥一挥衣袖,只带走一包榨菜……

省赛就这么在不经意间来了又去了,其实还是很在意的,从寒假时牺牲那么多时间来看学长的课件,到开学后连续的刷题,已经表明了态度,ACM将成为我大学生活中的一种生活方式,而不是说,所谓“打酱油”。

但是事实上在省赛到来前的一阵一直很颓废,考完汇编后又想复习离散又想刷题,结果日子就在一天天想着到底去看数学还是去刷题的过程中拖到了省赛。

在选拔赛按30%算的情况下选拔成绩第四,虽然说在实验学院这届的人里面算是最高的,然而跟前一名cainiao2hao差了20分还是比较悲催的,但终究是进了省赛。本来想抱的大腿廉兴宇被君落羽神要走了,我们三个一直很颓废的菜鸟就这么组成了一个水队。

21号热身赛,第一题很轻松的就过了,耗子坚持要看题面,我直接看了下数据说是排序,看完题后耗子敲,这里我们就出了点问题了,没有合适的分工,耗子在那敲,我和想SAMA没有去看后面的题而是在旁边看他敲的正确与否,虽然成功的发现了一点小问题并改正过来12分钟1Y了,但是分工不明确啊,而且另一个重要问题就是发现我们敲代码的准确性都有点差。B题是赤裸裸的最短路,开始照着模板敲,让他们两个先看C题。敲完之后发现模板上面的建图处理重边时有点问题,就开始修改,耗子和想SAMA看了我的代码之后异口同声的说:“我看不懂你在写什么!”好吧,他们两个根本就没有看过图论的题,我知道。模板改起来很麻烦,就想着自己写一个优先队列+BFS来处理,让他们两个上机敲C,我趴到一边在纸上写B题,整了半天终于想起来怎么写了,搞明白后在纸上把代码完整地写了一遍,他们的C题依然纠结,换我上来敲,最短路在机子上试没有问题,自己编了组带重边的用例测试也都通过了,交上去之后NEW,等了近10分钟还是NEW,无奈之下又交了一边,这回第二次交的代码倒是返回结果了,可惜是个No-Wrong Answer,不好看啊。这里又反映出来队伍一个问题,首次这种比赛没有考虑过这种半天没有评判结果的情况,浪费了不少机时。他们两个又上机开始折腾C题,我继续捣鼓B题,终于,还剩两分钟的时候我又交了一遍,可惜啊又一直是NEW。比赛结束之后反应过来了,是visit数组的初始化有问题,不过还好是热身赛。

关于热身赛是用来调试环境的,这方面我们队是初次参赛不太懂情况,不过还是发现了自己以往的刷题有一些在比赛中不规范的。譬如说memset()函数的头文件问题,从来没有接触过的打印代码。文件操作主办方给的说明是加freopen(),由于对这个不太了解,我们的程序当需要用到C++流的时候又会加上ifstream,晚上看代码的时候发现原来是不必要的,不过第二天还是加上了。

21号晚上因为下午做得太水,于是乎痛定思痛,把做过的一些图论经典题又整了一便,重新整合了一份模板,把一些数学、计算几何和日历运算的公式放了进去,到快10点才整完,打印店关门了,结果干出了一件很疯狂的事情——手抄模板。第二天没有图论,没有计算几何,没有日历,全白费了!后来听廉“觉主”说,省赛是不牵扯图论和计算几何的,被热身赛晃点了!

正式比赛,我们三个人是二区上校车最晚的,我和想SAMA俩睡神啊!所以到了场上状态也不是很好。开幕式又被工程女生雷到了,开始之后整体上有点晕。第一题我又是只看用例而耗子坚持要把题读完,他读完题我已经把方法大概想到了,让耗子敲,还跟他说用map,把想SAMA这个从来不用STL的家伙吓到了,跑去看其他题。耗子敲map敲的有点疑惑让我上去敲,我也是突然发现我这个思路太神经了,就26个字母的映射居然还用到了STL,抽风啊。改成数组映射敲完果断就交了,也果断就WA了,第一题大水题,就因为我的抽风开始了全场高罚时的旅程。首先一个错误,数组下标整反了,改过来立即交,又WA了,想SAMA回过头来看到说我把字符串的长度直接写成26了,结果耗子飞快地把后面字母表的处理那个26给改成了length(),再一次WA,华丽的悲剧就这么发生了,A题罚时60分钟。我翻了翻题后发现B题不太明白,C题似乎做过,D题显然背包,E题串处理,F题开始没看清题,看到距离和当成最小生成树了,G、H和I完全看不懂题意,J题是数学知道自己数学差就放弃了。让耗子去做E题,想SAMA说B题有思路,跟耗子一讲让他去敲,这个题也是我们正式赛少有的没有耗时间的题,当然在今天写总结之前我才发现,我们的方法虽然是线性的,但那个题根本就是直接判断最后一位,然后全部是那个数字啊!接着是E题, 我还打算写个循环链表出来暴力匹配,想SAMA说可以直接文本*2用模式去配,看到很多大牛说这里用KMP,我们组很惭愧啊,直接STLfind()了,由于不够“深刻”,导致没有看出来那种诡异的"car ar"之类用例,WA两次后我才想到这个可能,他们俩觉得不太可能有这样的数据,结果,还真是这个原因,3Y了,考虑得不够全面。这时看了看T15,两题,我们还是比较淡定的。耗子说C既然做过,那就看C,我开始以为F是最小生成树,就开始分析,当然就发现了完全理解错题意了;这时候想SAMAG题排序+统计,就让他上去敲,他说是就不敲了速度太慢,耗子告诉他,来一次都没有敲过代码不是很遗憾么,于是乎,我们见到了想SAMA果然敲得很慢也运行得很慢的代码(其实,这时候我给他复制代码头文件和宏的时候已经顺便把树状数组的lowbit()复制了,不过想SAMA对树状数组不熟悉,我又没看题,悲剧了),果断地返回TLE了。我跟想SAMAF题,想二分找找,讨论着讨论着又没想法了,凑过去看耗子整C题,耗子说没写过运算符重载,让我把小于和等于整一下,我很神奇的重载==时重载了=,编译错误啊!想SAMA继续研究G题,我各种翻题,想到自己一大早不光没有任何贡献而且还害得第一题交了4次,就非常懊恼,就听耗子的,敲了一个打印素数表上去准备搞J,发现这都能整错四五次,最后终于是写出来了,不过数据量太大一运行就死机,这个题应该是我们除了CG以外耗机时最多的了,实在不应该,连用例都没看。耗子的C敲完了,交,WA,这时看T15已经5道了,感觉有点郁闷。想SAMA跟我说这纸上印的题目是不是空格多印了一个,囧,要是重视了这句话……后面……此时耗子发现把那个减罚时的没有处理好,又改了三四次,想什么两人交的一模一样,或者是多组交的都一模一样之类的。倒是改掉不少BUG,还是错错错!我想到HOJ上面那个要求字母序的时候不区分大小写,又因为这个改了三次,3WA!头次使用打印代码功能,将C题代码打下来慢慢瞧,想SAMA敲超车,归并求逆序,ijl1各种混乱。我依然在旁边懊恼。突然发现T15已经6球了,仔细看了一下他们挂的有九连环那题,我想是不是应该把题先读懂,结果在耗子帮助下读懂题目,在纸上画了1-4的情况,发现是两个等差数列的求和,敲上去以后发现超过5就会错,又开始纸上写,感觉像DP,状态转移方程写出来后就往电脑上敲,反应过来数据域有点大,有点怯能不能开那么大数组,感觉跟以前看的滚动DP有点像,就用Fib数列的方法递推,只剩了50分钟,也没心思写矩阵了,直接暴力递推写完,1Y,感觉很兴奋,终于做出来自己的第一道题了,乘着兴奋劲把F题写了一个极度暴力的代码,也不再想什么二分、树状了,结果居然就那么赤裸裸的1Y了,后来看学长报告,好像是中位数吧,当时有想过,不过被自己推翻了。想SAMA开始修改那个纠结的归并,我帮着耗子,把C题从头到尾读了一遍,读到最后一句时开始分析最后一句的意思,讨论了一下空格到底要不要加,耗子说加上试试,我说估计没用,囧,果然就是这里的问题。还有半个小时的时候赶上了T15的进程,6题了。但到了最后,我依然是又犯了个错误:让想SAMA独自继续敲归并,我跑去看D题,天竟然没有看到全场没人做出来,这个悲剧啊!

得了个银奖,对于我来奖已经很不错了,两次校赛全是三等,有进步了。没有进四省赛在意料之中但又着实不爽,到最后一个小时才有了感觉确实不太好。队伍问题比较明显:分工不明确,几个人看同一题;队友(尤其是想SAMA)知识面还是比较窄;我的英语,就不说啥了,H的树状数组和G题的水博弈,全是因为没看懂题于是根本就没去做;紧张啊,敲错代码看错题这种事是永远的悲哀。

离散考完了,轻松了,努力刷题吧。希望以后的其他比赛不会再这么水了。最后,膜拜那个生日request,当时蹦出的对话框直接吓得我手发抖打错字啊!还有,祝DPS马到成功!

原创粉丝点击