今年已經(jīng)高二了,2010年的市選已經(jīng)結(jié)束,還有一個(gè)月,我將迎來(lái)省選。這時(shí)候突然感到特別絕望和無(wú)助,沒(méi)有上一次準(zhǔn)備競(jìng)賽時(shí)的狀態(tài),反倒多了一絲不好的預(yù)感。此刻不想考慮程序和一行行的代碼,卻很想記錄下高中以來(lái)的OI。
2008年10月左右,開始接觸計(jì)算機(jī)編程,學(xué)習(xí)C語(yǔ)言。
兩個(gè)星期的時(shí)間,學(xué)習(xí)了一點(diǎn)點(diǎn)基礎(chǔ),參加NOIP2008,初賽滿分100分,我得了25分,沒(méi)有進(jìn)入復(fù)賽。
之后查了NOIP2008安徽省的成績(jī),滿分400分的題目閆令琪330分全省第二;之前一次坐公交車也聽說(shuō)了一些事情;沒(méi)有想到竟然是同一個(gè)人。當(dāng)時(shí)還不認(rèn)識(shí)他。
之后的幾個(gè)月里,一直被C語(yǔ)言的基本語(yǔ)法困擾著,其中指針是我認(rèn)為最難的。寒假的時(shí)候看完了吉林大學(xué)康輝教授的48集C語(yǔ)言教程,教程基本上是很基礎(chǔ)的,但是加深了我對(duì)遞歸的理解。這一階段一直在學(xué)習(xí)著一些基礎(chǔ)問(wèn)題:選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)、動(dòng)態(tài)內(nèi)存的分配……現(xiàn)在回想起來(lái),自己浪費(fèi)了一些時(shí)間在一些用處不大的方面,比如數(shù)組和指針。
在那年學(xué)校開聯(lián)歡晚會(huì)的那天中午上學(xué)的時(shí)候,我去新華書店找到了一本《密碼傳奇》,此書主要介紹二戰(zhàn)時(shí)期的密碼戰(zhàn)。寒假的時(shí)候根據(jù)介紹編寫了幾個(gè)加密和解密,我直到現(xiàn)在都認(rèn)為是這些程序奠定了我的編程基礎(chǔ),這可能是我做的最早的“字符串處理”類的題目吧。
2009年1月左右,第一次登陸了vijos,認(rèn)識(shí)了在線測(cè)評(píng)系統(tǒng),感覺上面的題目好難。
差不多也是在這個(gè)月,逛新華書店時(shí)發(fā)現(xiàn)了一本《全國(guó)青少年信息學(xué)奧林匹克聯(lián)賽培訓(xùn)教程(中學(xué)高級(jí)本)》,書上給的代碼是Pascal語(yǔ)言寫的,看上去雖然不習(xí)慣,但還是能看懂吧。買這本書的原因很簡(jiǎn)單:在此之前,我一直認(rèn)為貪心和動(dòng)態(tài)規(guī)劃是很難而且很重要的,因?yàn)榻?jīng)常聽別人提到貪心和DP,而且有些最優(yōu)化問(wèn)題需要依靠這兩種想法來(lái)解決。翻開目錄第三章就是貪心,后面幾章還有動(dòng)態(tài)規(guī)劃,于是就買了。
現(xiàn)在看來(lái)對(duì)此書內(nèi)容實(shí)在不敢恭維,大大限制了讀者的思維。但是,畢竟還是扎實(shí)了我對(duì)基礎(chǔ)算法的掌握,讓我對(duì)信息學(xué)競(jìng)賽有了一個(gè)更全面的了解:不僅僅是C語(yǔ)言,也不單動(dòng)態(tài)規(guī)劃,還有圖論、搜索、剪枝、數(shù)據(jù)結(jié)構(gòu)、組合數(shù)學(xué)……
2009年3月左右,也就是去年的這個(gè)時(shí)候,老師通知我參加信息學(xué)競(jìng)賽阜陽(yáng)市選拔,參加的時(shí)候沒(méi)有想到能進(jìn)復(fù)賽。試題總共7道題,每題100分,我做了4道題,當(dāng)時(shí)也沒(méi)有數(shù)據(jù)規(guī)模的概念,以為只要答案正確不管效率如何就能拿滿了,當(dāng)時(shí)快速排序、二分查找都不會(huì),就會(huì)一個(gè)冒泡排序和線性查找(線性查找說(shuō)得挺邪乎,就是從前向后找,找到為止),更別說(shuō)動(dòng)態(tài)規(guī)劃、圖論和搜索了。不過(guò)我發(fā)揮得還算好,會(huì)的都用上了。保守地估計(jì)了一個(gè)350的分?jǐn)?shù),結(jié)果才得了290。但是卻出乎我意料地全市第三。
之后開始準(zhǔn)備省選,按照我的觀念,我自然從動(dòng)態(tài)規(guī)劃開始學(xué)。
記得那個(gè)月的某個(gè)下午,和高我一屆、市選第二名的學(xué)長(zhǎng)sqm一起吃飯,他問(wèn)我最近準(zhǔn)備從哪個(gè)方面復(fù)習(xí)(那時(shí)的我哪談得上“復(fù)習(xí)”),我說(shuō)我在學(xué)動(dòng)態(tài)規(guī)劃,他勸我學(xué)習(xí)深度優(yōu)先搜索(DFS),說(shuō)省選的動(dòng)態(tài)規(guī)劃很難,臨時(shí)學(xué)沒(méi)有意義。我那時(shí)知道,那個(gè)比賽叫“省選”。
之后開始學(xué)DFS,大概學(xué)了幾個(gè)星期。在此期間,我試圖用動(dòng)態(tài)規(guī)劃解決市選中我沒(méi)有完成的第五題,但是失敗了,對(duì)第六題更是沒(méi)有思路,無(wú)奈只有先放著。
又從網(wǎng)上訂了一本《數(shù)據(jù)結(jié)構(gòu)與程序設(shè)計(jì)——C語(yǔ)言(第二版)》,差不多把前幾章都看完了。現(xiàn)在真的驚嘆于當(dāng)時(shí)的理解力和記憶力,許多內(nèi)容幾乎看過(guò)一遍就不會(huì)忘記。
4月底,坐上了去蕪湖的火車。在火車站,第一次見到了城郊中學(xué)的wxy,比我高一屆。在火車上,我了解到了NOIP2008時(shí)sqm和wxy的成績(jī),多說(shuō)一句,直到NOIP2009復(fù)賽的時(shí)候,我才知道為什么他們當(dāng)時(shí)會(huì)得到那么不滿意的分?jǐn)?shù)。wxy說(shuō)市選第五題是貪心,我當(dāng)時(shí)百思不得其解,始終不能理解。
記得在省選的前一天晚上,我和sqm把wxy的《算法藝術(shù)與信息學(xué)競(jìng)賽》這本書借來(lái),sqm似乎對(duì)數(shù)論非常感興趣,我們一起看miller-robbin素?cái)?shù)測(cè)試,他當(dāng)時(shí)提出了一個(gè)關(guān)于p很大的情況下會(huì)溢出的疑問(wèn),當(dāng)時(shí)我對(duì)此也感到不解。現(xiàn)在回想,真的是很簡(jiǎn)單的問(wèn)題。
省選分兩試,總分600,一試我的得分是0分,二試的分?jǐn)?shù)老師似乎是安慰我說(shuō)了30分。
省選回來(lái)之后,我從網(wǎng)上訂了一本《算法藝術(shù)與信息學(xué)競(jìng)賽》,翻看了前幾頁(yè)就看不下去了,純理論沒(méi)有代碼,內(nèi)容很深,于是還是決定看《培訓(xùn)教程》。
再次回想,還是《算法藝術(shù)》的內(nèi)容比較有深度和啟發(fā)性,《培訓(xùn)教程》雖然易懂但是卻很有局限性。
wxy在省選中取得了不錯(cuò)的成績(jī),全省十幾名,回來(lái)之后在城郊中學(xué)辦了一個(gè)模擬賽,自己出題,邀請(qǐng)別人來(lái)考。我也去了,400分的題目考了280分,在那里認(rèn)識(shí)了初中的幾位選手,包括和我一個(gè)班主任的十五中的幾位、還有初中其它學(xué)校的。
之后的一段時(shí)間一直是在慢慢地學(xué)習(xí)、偶爾到vijos上做題、參加模擬賽。
到了暑假,閆令琪在高考中取得了全市最高分,辦了一個(gè)輔導(dǎo)班,我也去了。那兒的氛圍很輕松,和平常上課很不一樣,一人一臺(tái)筆記本,課想聽就聽,不想聽玩電腦。許多內(nèi)容我確實(shí)認(rèn)真聽了,收獲很多。
這個(gè)暑假進(jìn)步很大,在各個(gè)方面:思考問(wèn)題的方式、動(dòng)態(tài)規(guī)劃、搜索、圖論、數(shù)論……其中我認(rèn)為最重要的就是思考問(wèn)題的方式,其它的都是次要的,方法才是本質(zhì)。
轉(zhuǎn)眼間暑假過(guò)完了,到了9月份,這意味著我即將迎來(lái)新一年的NOIP!初賽是筆試,還要背許多計(jì)算機(jī)常識(shí),什么人工智能之父、計(jì)算機(jī)之父之類的內(nèi)容。
初賽在十五中舉行,回到母校,突然感覺很熟悉,坐在教室里,感覺就像九年級(jí)月考一樣,見到了一個(gè)初中同學(xué)。又想到了我九年級(jí)的八次月考,熟悉了八次的第一考場(chǎng)。
初賽有點(diǎn)不按常規(guī)出題……但還是進(jìn)了復(fù)賽,依然是第三。
之后是每周一次的集訓(xùn),每次做2-3個(gè)小時(shí)題目,做過(guò)之后立即排名,我記得我第一次集訓(xùn)是第一名,之后在1-3名之間徘徊。
到了11月21日的復(fù)賽,這天是yx的生日。上午結(jié)束了3個(gè)小時(shí)的競(jìng)賽,回去的火車上給yx發(fā)了一條短信。在之后的一段時(shí)間里甚至是現(xiàn)在,我都覺得那3個(gè)小時(shí)驚心動(dòng)魄,第三題很久沒(méi)有思路,想到枚舉,寫了100多行的代碼但是運(yùn)行時(shí)卻出錯(cuò),當(dāng)時(shí)的放棄真是最冒險(xiǎn)也是最正確的決定了,果斷地開始了最后一題。后來(lái)看成績(jī)的時(shí)候,發(fā)現(xiàn)自己最后一題得了全省最高分,比這題的第三名高出50分,也就是靠最后一題才取得了全省第七的名次。忘了當(dāng)時(shí)是如何決定放棄的,要知道,如果放棄一道題目,可能就不是一等獎(jiǎng)了。就結(jié)果來(lái)看,如果不放棄,我真的不是一等獎(jiǎng)了。
sqm、wxy同時(shí)獲得省一等獎(jiǎng)。
準(zhǔn)備復(fù)賽的那段時(shí)間真的很辛苦,每天都要熬夜到十二點(diǎn)多,奇怪的是白天也不困,中午很多時(shí)候也不睡覺,走到哪想的都是算法和代碼,每天抱著《算法藝術(shù)》和《培訓(xùn)教程》。
回想起來(lái),最終不錯(cuò)的結(jié)果和我有計(jì)劃的復(fù)習(xí)可能也有一定的關(guān)系(大半年之后的我真的算是“復(fù)習(xí)”了),把基礎(chǔ)練習(xí)得很扎實(shí)。
NOIP2009圓滿收?qǐng)觯蟮陌肽陜?nèi)我更多關(guān)注的是大學(xué)的招生信息,決定自己應(yīng)該報(bào)考哪所大學(xué)的保送生考試,文化課方面也有所進(jìn)步,編程方面沒(méi)有花太多心思,偶爾看看算法、做做題。
1個(gè)月之后就是省選了,確實(shí)感覺到時(shí)間的流逝了,此刻再次想起了伽羅華的那句“我沒(méi)有時(shí)間了”,語(yǔ)文老師教給我們?cè)S多惜時(shí)的名言,我覺得都沒(méi)有這句話說(shuō)得最真摯。這一年的時(shí)間里經(jīng)歷了太多的事情是我需要記錄下來(lái)的,也正是出于這個(gè)目的我才決定寫這篇日志。
忘記了當(dāng)初是什么原因才有了一閃而過(guò)的念頭:“參見信息學(xué)競(jìng)賽。”如果有重新來(lái)過(guò)的機(jī)會(huì),我不會(huì)選擇孤身奮戰(zhàn),我不會(huì)選擇信息學(xué)競(jìng)賽,可能會(huì)選擇數(shù)學(xué)或者物理競(jìng)賽,我希望有一些能夠交流的朋友而不是自己一個(gè)人在漫長(zhǎng)的黑夜坐在電腦前飛速地敲擊著鍵盤……
在這將近兩年的時(shí)間里,我確實(shí)改變了很多,許多的磨礪讓我愈發(fā)收斂了當(dāng)初的銳氣,這種“收斂”決不是“謙虛”,也算不上“自卑”,是真的能夠看到自己身上有許多不足,想到了在一本書上看到的話“現(xiàn)在的高峰絕不是頂峰,有人在更高的地方看著你”。
高中的OI生涯即將結(jié)束(如果NOIP2010我不參加的話),希望我市在今后能夠取得更好的成績(jī)。這次省選之后,一中的學(xué)生如果需要資料的話可以隨時(shí)向我借:
《程序算法與技巧精選》
《數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版)》
《數(shù)據(jù)結(jié)構(gòu)與程序設(shè)計(jì)——C語(yǔ)言(第二版)》
《算法競(jìng)賽入門經(jīng)典》
《全國(guó)青少年信息學(xué)奧林匹克聯(lián)賽培訓(xùn)教程(中學(xué)高級(jí)本)》
《挑戰(zhàn)編程 程序設(shè)計(jì)競(jìng)賽訓(xùn)練手冊(cè)》
《計(jì)算機(jī)數(shù)學(xué)基礎(chǔ)》
《算法藝術(shù)與信息學(xué)競(jìng)賽》
《信息學(xué)奧林匹克競(jìng)賽國(guó)際國(guó)內(nèi)分類試題精解(2003-2004)上冊(cè)》
《信息學(xué)奧林匹克競(jìng)賽國(guó)際國(guó)內(nèi)分類試題精解(2003-2004)下冊(cè)》
《程序設(shè)計(jì)中常用的解題策略》
《國(guó)際大學(xué)生程序設(shè)計(jì)競(jìng)賽例題解(五)》