我的OI之路

清楚地记得我是从小学的某一天开始喜欢计算机的,下面大概写一下OI的经历。

初中

微机老师选数学好或计算机好的学生去学OI,貌似我是因为数学好被班主任选去自习课上课,当时班里去了好几个人学基础的pascal编程,只用Turbo Pascal,偶尔还能上上网,那时候就知道大榕树了,但不知道OIBH(或许那时候还没有),那时候经常玩暴力摩托。。至于学了什么,当时学了基本语句,什么var, begin, end 都讲了,变量类型只知道integer,我会的最难的语句就是for循环,当时还懂了栈的定义。

普及组初赛那天是下午,坐学校的班车去很远的地方考的,还看到了什么“自制火箭”(PS:豆瓣上小组有个帖子讨论OI,大家一说就发现04年都在那里考了,可惜现在找不到帖子了,MS被删了)。凭借对电脑的熟悉,选择打得很好。考试之前听说上一年分数线是40分,当时考完就觉得是40分以上,结果是41分,不过那年因为题简单,分数线是50。从此初中就远离OI了。后来也在家下过VB和易语言玩过,不过什么都不懂。

初三寒假,听说jlyz招各科竞赛大牛,就去报了。前几天还装模作样的拿出买的书看(现在好像找不到了~)。考试时,第一次看到FP,感觉背景很神奇。。第一次看到那么多张纸的题(A4),只会第一题,本来想打一下,忘了integer怎么拼,看了很长时间帮助也没找到,于是就放弃了。半小时之后,我撤了。那天是3月4日,东北下大雪,学校停课两天。那也是我第一次来YZ,感觉校园很大,桌椅很好。

高中

本来以为OI与我已经没什么联系了,没想到微机课发了广告,招学生学这个,于是很高兴地参加了。第一天讲课是9月10日教师节。我和pjl决定人多就去上课,人少就去看初中老师,最后还是去听了怎么打开和关闭FP,以后慢慢的就学到了procedure, function, 数组什么的,NOIP前几天还讲了进制转换。。那时候大部分人已经跟不上了。PS:我NOIP前几天还傻乎乎的想自学DP。。我拿到准考证时还在诧异为什么是提高组,以为弱省是普及,强省才是提高。。考试时不会快排,别的排序也不太熟悉,所以第一题根本没做!剩余的时间基本都在打第二题,第四题输出0骗到10分,最后打多少也不知道,没找到人。PS:前几天打去年的第二题也才得60分,最烦恶心模拟题。

寒假培训是从08年1月17日开始的,我还拿到了好像0分就得奖的三等奖奖状。寒假学到了qsort,递归等等。(忘了DP, dfs, bfs是什么时候学得了,好像是开学后学的)整个假期都在做zoj的模拟、贪心,总之都是很简单的题目,然后发到学校论坛上。

小马马老师以某年第四题讲01背包的时候我感觉很爽,从搜索到DP,再到滚动数组、最后讲一维数组直接做,再加上循环终值的优化好像都是一起讲完的。我除了最后一种方法以外都理解的不错,最后一种方法也很快想懂了。当时想是不是这个就是“算法艺术”。

后来就开始做USACO和ZOJ的题,也做了一些DP题,但没有一道是自己直接做出来的。暑假的时间也没有好好利用,留的题都没做完(虽然大多数人和我一样),就算是一天能做一道的话也能提高很多。

这学期又做了一阵USACO,然后就开始做近几年NOIP普及组和提高组的题。我做的慢比几个人慢,但也不知道为什么,或许是他们时间多,和我交流的人比我做的都少。到了复赛前一周才基本做完,好像剩3题没做,其中两道是恶心的模拟,另一道是去年第三题高精DP,没时间做这个了。在这个过程中学到石子归并的DP和高精度乘法。

近几年NOIP中印象最深的是过河(river),那道题是周六下午开始在微机室想,周日看了N多人的题解,晚上才想明白,然后AC了。周一音乐课(或许是美术)上想到可能会超过maxlongint,测了一下自己编的数据果然如此,后来自己给改了。这是自己想题时间最长的一次。

复赛前一周基本上都是晚上12点睡,所以数学讲的椭圆没怎么学。。

NOIP 2008

初赛81.5,和预想的差不多,省第12,要是复赛者名次就好了。最后一题不太懂,快排那题把if then 看成 while do,没理解要干嘛。。不过我答案应该也是对的。

复赛又是在本校,jlyz又是全省参赛人数最多的,抽签又抽到旧电脑,发现空格不太好用。装了3个FP(for noi, 2.0.2, 2.0.4),还装了notepad++。第一个字大,放弃,经测试2.0.4 alt+x 关闭时会自动保存,这个很不爽,于是就用了2.0.2。

目前还不知道成绩(联系不到老师5555555),下面纯属瞎扯:

考前没敢在网上发”bless”,初中在网上许愿后考得很垃圾留下阴影了。听巨牛zys的话,花了一段时间看题。看完前三题,感觉似乎不难,也感觉到第三题一定是经典DP,就是不会。。很仔细地开始做题,10多分钟做完第一题,打的时候就想过0、1的处理,好像是一次编译就OK了。然后开始看第二题,不会,想了想,捞分重要,去看第三题,更不会。。又回来想第二题,虽然都说要想好再打,我还是边想边打,搜所有可能情况,然后分三段,转成字符串再val成longint求和,只改了一个地方就过了两组样例。测了一下24时绝对也在1s以内出解。又试着输出第二组样例和n=24是的可行解,好像很正常。记住了n=24的答案:128。此时9:30。第三题想了十多分钟DP,没想出来,于是打搜索,搜出一条路径再从头搜下一条。打了很长时间,也调了一会才过样例。经测试30*30的数据就会超时,而且今天早上才想起来我第一次搜索就选择f[x,y]+map[tx,ty]<f[tx,ty]就不搜,这显然是不对的,我练习搜索也很少,出错比较正常。第四题最开始输出0骗分,后来又想骗顺序数据,输出a b a b,后来看到最小字典序就改成a a b b了,10分啊。花了半个多小时检查输入输出什么的,发现第三题没有fillchar visit数组,改过来了,到时间才发现没往要求的文件夹里存,不过当然,还是存进去了。还有考试之前发现电脑时间晚了一小时,赶快给改了回来,怕出问题。

出来以后很自信,心想大约250应该差不多1=吧,不一会就想到骗分骗错了。等到晚上5点,应该成绩出来了,没接到电话,心里很紧张,说明可能。。。后来就放松了。上OIBH上发消息给本省外地的某牛,答曰他230考砸了,分数线应该250以上。我没想到分数线提高这么多,今天群里消息是250上下10分。估计没希望了,除非RP大爆发+ccf真正全文比对必须换行才有可能。明天中午去看成绩,应该是二等的前几名吧(乐观地说)。

现在的问题是我应该怎么办?NOIP 2009是肯定要参加的了,在家做题是一定的,但是还接着学OI吗?马老师能让吗?班主任应该不清楚这些,应该不会管。家长也不会管。接着学指的是省队,显然不现实,半年明显达不到,即使达到,noi也什么都不是。但是我真的还想学,或许上大学再ACM,要是noip 2009没拿到1=拼高考去zju之类的也有点困难。

十一点了,时间过得好快。周五晚上写“和谐”为话题的作文,写得我晚饭都吃不下去。。

最后第一次bless一下所有oier,特别是高三没拿到1=,或没writeln 0分、不知CCF怎么处理,还有那个程序被还原的湖北那个oier..

又去oibh看了一眼,都在谈退役,都很伤心的样子。至少我们感受过OI,坚持着熬夜写代码,调试,至少我不是完全为了上大学学这个的。刚看了barty的“最后的征途.pdf“,或许我早点不上自习会有些帮助,不过没关系,一年的周末+寒暑假完全没问题。

Bless~


comments powered by Disqus