今年已经高二了,2010年的市选已经结束,还有一个月,我将迎来省选。这时候突然感到特别绝望和无助,没有上一次准备竞赛时的状态,反倒多了一丝不好的预感。此刻不想考虑程序和一行行的代码,却很想记录下高中以来的OI。
2008年10月左右,开始接触计算机编程,学习C语言。
两个星期的时间,学习了一点点基础,参加NOIP2008,初赛满分100分,我得了25分,没有进入复赛。
之后查了NOIP2008安徽省的成绩,满分400分的题目闫令琪330分全省第二;之前一次坐公交车也听说了一些事情;没有想到竟然是同一个人。当时还不认识他。
之后的几个月里,一直被C语言的基本语法困扰着,其中指针是我认为最难的。寒假的时候看完了吉林大学康辉教授的48集C语言教程,教程基本上是很基础的,但是加深了我对递归的理解。这一阶段一直在学习着一些基础问题:选择结构、循环结构、动态内存的分配……现在回想起来,自己浪费了一些时间在一些用处不大的方面,比如数组和指针。
在那年学校开联欢晚会的那天中午上学的时候,我去新华书店找到了一本《密码传奇》,此书主要介绍二战时期的密码战。寒假的时候根据介绍编写了几个加密和解密,我直到现在都认为是这些程序奠定了我的编程基础,这可能是我做的最早的“字符串处理”类的题目吧。
2009年1月左右,第一次登陆了vijos,认识了在线测评系统,感觉上面的题目好难。
差不多也是在这个月,逛新华书店时发现了一本《全国青少年信息学奥林匹克联赛培训教程(中学高级本)》,书上给的代码是Pascal语言写的,看上去虽然不习惯,但还是能看懂吧。买这本书的原因很简单:在此之前,我一直认为贪心和动态规划是很难而且很重要的,因为经常听别人提到贪心和DP,而且有些最优化问题需要依靠这两种想法来解决。翻开目录第三章就是贪心,后面几章还有动态规划,于是就买了。
现在看来对此书内容实在不敢恭维,大大限制了读者的思维。但是,毕竟还是扎实了我对基础算法的掌握,让我对信息学竞赛有了一个更全面的了解:不仅仅是C语言,也不单动态规划,还有图论、搜索、剪枝、数据结构、组合数学……
2009年3月左右,也就是去年的这个时候,老师通知我参加信息学竞赛阜阳市选拔,参加的时候没有想到能进复赛。试题总共7道题,每题100分,我做了4道题,当时也没有数据规模的概念,以为只要答案正确不管效率如何就能拿满了,当时快速排序、二分查找都不会,就会一个冒泡排序和线性查找(线性查找说得挺邪乎,就是从前向后找,找到为止),更别说动态规划、图论和搜索了。不过我发挥得还算好,会的都用上了。保守地估计了一个350的分数,结果才得了290。但是却出乎我意料地全市第三。
之后开始准备省选,按照我的观念,我自然从动态规划开始学。
记得那个月的某个下午,和高我一届、市选第二名的学长sqm一起吃饭,他问我最近准备从哪个方面复习(那时的我哪谈得上“复习”),我说我在学动态规划,他劝我学习深度优先搜索(DFS),说省选的动态规划很难,临时学没有意义。我那时知道,那个比赛叫“省选”。
之后开始学DFS,大概学了几个星期。在此期间,我试图用动态规划解决市选中我没有完成的第五题,但是失败了,对第六题更是没有思路,无奈只有先放着。
又从网上订了一本《数据结构与程序设计——C语言(第二版)》,差不多把前几章都看完了。现在真的惊叹于当时的理解力和记忆力,许多内容几乎看过一遍就不会忘记。
4月底,坐上了去芜湖的火车。在火车站,第一次见到了城郊中学的wxy,比我高一届。在火车上,我了解到了NOIP2008时sqm和wxy的成绩,多说一句,直到NOIP2009复赛的时候,我才知道为什么他们当时会得到那么不满意的分数。wxy说市选第五题是贪心,我当时百思不得其解,始终不能理解。
记得在省选的前一天晚上,我和sqm把wxy的《算法艺术与信息学竞赛》这本书借来,sqm似乎对数论非常感兴趣,我们一起看miller-robbin素数测试,他当时提出了一个关于p很大的情况下会溢出的疑问,当时我对此也感到不解。现在回想,真的是很简单的问题。
省选分两试,总分600,一试我的得分是0分,二试的分数老师似乎是安慰我说了30分。
省选回来之后,我从网上订了一本《算法艺术与信息学竞赛》,翻看了前几页就看不下去了,纯理论没有代码,内容很深,于是还是决定看《培训教程》。
再次回想,还是《算法艺术》的内容比较有深度和启发性,《培训教程》虽然易懂但是却很有局限性。
wxy在省选中取得了不错的成绩,全省十几名,回来之后在城郊中学办了一个模拟赛,自己出题,邀请别人来考。我也去了,400分的题目考了280分,在那里认识了初中的几位选手,包括和我一个班主任的十五中的几位、还有初中其它学校的。
之后的一段时间一直是在慢慢地学习、偶尔到vijos上做题、参加模拟赛。
到了暑假,闫令琪在高考中取得了全市最高分,办了一个辅导班,我也去了。那儿的氛围很轻松,和平常上课很不一样,一人一台笔记本,课想听就听,不想听玩电脑。许多内容我确实认真听了,收获很多。
这个暑假进步很大,在各个方面:思考问题的方式、动态规划、搜索、图论、数论……其中我认为最重要的就是思考问题的方式,其它的都是次要的,方法才是本质。
转眼间暑假过完了,到了9月份,这意味着我即将迎来新一年的NOIP!初赛是笔试,还要背许多计算机常识,什么人工智能之父、计算机之父之类的内容。
初赛在十五中举行,回到母校,突然感觉很熟悉,坐在教室里,感觉就像九年级月考一样,见到了一个初中同学。又想到了我九年级的八次月考,熟悉了八次的第一考场。
初赛有点不按常规出题……但还是进了复赛,依然是第三。
之后是每周一次的集训,每次做2-3个小时题目,做过之后立即排名,我记得我第一次集训是第一名,之后在1-3名之间徘徊。
到了11月21日的复赛,这天是yx的生日。上午结束了3个小时的竞赛,回去的火车上给yx发了一条短信。在之后的一段时间里甚至是现在,我都觉得那3个小时惊心动魄,第三题很久没有思路,想到枚举,写了100多行的代码但是运行时却出错,当时的放弃真是最冒险也是最正确的决定了,果断地开始了最后一题。后来看成绩的时候,发现自己最后一题得了全省最高分,比这题的第三名高出50分,也就是靠最后一题才取得了全省第七的名次。忘了当时是如何决定放弃的,要知道,如果放弃一道题目,可能就不是一等奖了。就结果来看,如果不放弃,我真的不是一等奖了。
sqm、wxy同时获得省一等奖。
准备复赛的那段时间真的很辛苦,每天都要熬夜到十二点多,奇怪的是白天也不困,中午很多时候也不睡觉,走到哪想的都是算法和代码,每天抱着《算法艺术》和《培训教程》。
回想起来,最终不错的结果和我有计划的复习可能也有一定的关系(大半年之后的我真的算是“复习”了),把基础练习得很扎实。
NOIP2009圆满收场,之后的半年内我更多关注的是大学的招生信息,决定自己应该报考哪所大学的保送生考试,文化课方面也有所进步,编程方面没有花太多心思,偶尔看看算法、做做题。
1个月之后就是省选了,确实感觉到时间的流逝了,此刻再次想起了伽罗华的那句“我没有时间了”,语文老师教给我们许多惜时的名言,我觉得都没有这句话说得最真挚。这一年的时间里经历了太多的事情是我需要记录下来的,也正是出于这个目的我才决定写这篇日志。
忘记了当初是什么原因才有了一闪而过的念头:“参见信息学竞赛。”如果有重新来过的机会,我不会选择孤身奋战,我不会选择信息学竞赛,可能会选择数学或者物理竞赛,我希望有一些能够交流的朋友而不是自己一个人在漫长的黑夜坐在电脑前飞速地敲击着键盘……
在这将近两年的时间里,我确实改变了很多,许多的磨砺让我愈发收敛了当初的锐气,这种“收敛”决不是“谦虚”,也算不上“自卑”,是真的能够看到自己身上有许多不足,想到了在一本书上看到的话“现在的高峰绝不是顶峰,有人在更高的地方看着你”。
高中的OI生涯即将结束(如果NOIP2010我不参加的话),希望我市在今后能够取得更好的成绩。这次省选之后,一中的学生如果需要资料的话可以随时向我借:
《程序算法与技巧精选》
《数据结构(C语言版)》
《数据结构与程序设计——C语言(第二版)》
《算法竞赛入门经典》
《全国青少年信息学奥林匹克联赛培训教程(中学高级本)》
《挑战编程 程序设计竞赛训练手册》
《计算机数学基础》
《算法艺术与信息学竞赛》
《信息学奥林匹克竞赛国际国内分类试题精解(2003-2004)上册》
《信息学奥林匹克竞赛国际国内分类试题精解(2003-2004)下册》
《程序设计中常用的解题策略》
《国际大学生程序设计竞赛例题解(五)》
posted on 2010-03-28 21:37
lee1r 阅读(2194)
评论(14) 编辑 收藏 引用 所属分类:
Programming Diary