資訊學競賽,我憑什麼能拿到一等獎?

本文作者畢業於山東萊州一中,是NOIP 2004一等獎獲得者,原文標題:《為什麼我們資訊學奧賽出了國家一等獎》,有刪減。雖然十幾年過去了,但文中作者的競賽經歷和體會,仍讓很多OIer感同身受,唏噓不已,故重發。

作者的資訊學競賽經歷:

NOIP2001初賽全市第3名,前2名有資格參加煙臺加試賽。

NOIP2002初賽全市第2名,第1名有資格參加煙臺加試賽。

NOIP2003初賽全市第1名,差點因為父親的反對沒去成,煙臺加試賽最終失敗。

NOIP2004夏令營:系統學習了演算法,認識了一大堆OIer,拉了一次肚子,住了次院。

NOIP2004 煙臺加試賽:看到題目時我樂壞了——4道題我都做過。成績出來後我大驚失色,只有20分。官方解釋:檔案丟失,只找到我的一個程式。

不過,我還是被允許參加NOIP2004複賽,就是在這屆複賽,我拿到了一等獎。

NOIP2005:我的告別賽,這次比賽結束後我正式退役。

資訊學競賽,我憑什麼能拿到一等獎?

搞資訊學奧賽要整日和資料打交道。我們喜歡“真實”,不喜歡“虛假”。我們只重視事實和真實的資料。因此在考慮該用什麼方式呈現這篇文章時,我決定不講空話。要讓人信服,我只擺一些“資料”和“事實”。

一、時間

“時間”是衡量做功多少的一個常用的量化指標。就像天津市一位老師分析的那樣:

“要想取得一等獎至少要調夠200小時的程式碼。”

要想拿一等獎,首先必須投入大量的時間。我們的投入有多少呢?

我們幾乎擠出了所有可有佔用的時間,多的時候每週活動30節。

班會2節,體育2節,資訊科技2節,活動2節,自理課2節,音美課1節,星期六晚自習4節,以及部分自習課,在比賽前夕,可能還會有更多的自習課被吃掉。而在校外,如

寒暑假,我每天的學習時間平均超過12小時。

這些時間加起來有多少?高一下學期,為有更充分的時間學習奧賽,我們將宿舍搬到了六樓值班室。這裡我們可以不受學校作息時間的限制,我們可以在每晚10點熄燈鈴後繼續開燈學習。每晚我們會學多少時間呢?我不敢講。但值班的老師和巡夜的警衛一定知道。

就是這樣的時間投入使我們有可能觸及一等獎。

二、書

今年我曾讓ZEP整理了機房中現存的書。這些本書共有19本,價值364。75元,

按書後的印刷資訊統計至少有676萬字。

而我們一個學期的所有教科書加起來也不過200萬字吧。而且大家能感覺到讀懂程式設計書上的10個字和讀懂教科書上的10個字是不一樣的。

上面的統計只是一個很保守的統計。那些現在在其他OIer手中的書我無法統計到。至於計算機和網上的我們看過的論文、講稿、解題報告、試題討論和電子書我就更無法統計它們到底有多少了,只是

從資料夾屬性上我看到它們有500M。

這些書籍資料加起來就是我們取得一等獎的知識基礎。就是這些。

三、題

解一道資訊學奧賽題和解一道物理或數學題是不可同年而語的。你若是知道3個小時的比賽時間只要求解決4道題,你就可以想象解決一道資訊學奧賽題需要耗費多少時間和精力。從參加奧賽到現在我一共做了多少題,這無法計數。不過我覺得單數一下那幾個比較大的題庫中的題就不少了。我們做過幾個比較經典的題庫,如歷屆聯賽複賽試題、Poi(Poland Olympiad in Informatics)、TJU、USACO等。TJU是一個線上評測系統,是WFL主攻的題庫。這個題庫共有200多道題,WFL解決了幾乎所有問題。參照3小時解決4道題你可以計算一下單做這個題庫要用多少時間。USACO是我後半段時間主攻的題庫,這是美國計算機協會(USA computer organization)專門為青少年資訊學奧賽輔導而設立的題庫,不用說這肯定是全英文的題庫。讀懂英文題,解決,提交,評測,你可以想象要花費多少時間。

還有學許許多多書上的,模擬賽上的,講稿上的題目我無法統計有多少。不過我們可以從另一個角度評估一下我們做題的多少:離開新校前我複製了我機器上所有的程式程式碼,然後用計算機自動統計了我寫的程式碼行數。得到的結果讓我自己也吃了一驚,

我在106微機上共寫了27257行程式碼。而我曾看過的程式碼(包括別人寫的)共有46239行。

我想考過二級或學過寫程式的人都會明白這兩個數字的意味。寫了這麼多程式碼,我覺得我應該拿一等獎。

資訊學競賽,我憑什麼能拿到一等獎?

列了這麼多資料,我覺得這只是“表面”而已,只是能看到的東西。這些只是我們為取得一等獎而付出的努力,而為什麼我們能付出這種努力——為什麼我們能擠出時間,為什麼我們能看那麼多書,為什麼我們能做那麼多題——內心深處的主觀原因才是我們能拿一等獎的根本原因。那麼這些內在的東西都有什麼呢?我覺得至少有三大點:一、自覺和強大的自制力。二、激情和強烈的動機。三、能稍微吃點苦。

一、自覺和強大的自制力

客觀講,自覺和自制並不是拿一等獎最重要的保證。但之所以將其放在第一位是因為這是最難做到的一點——特別是對於資訊學奧賽的選手。

我覺得自覺應該包括兩個方面:

自覺做該做的事,自覺不做不該做的事。

由於奧賽基本上是和日常課內學習脫節的,並不像課內學習那樣有老師、考試等一系列監督評價機制,因此學習奧賽有很大的自由度,有許多自主學習的時間,學與不學全憑自覺。對於資訊學奧賽這種自由就更大了。實際上在資訊學奧賽這邊,一直是我們自己定學習計劃,定內容和進度。老師的作用體現在幫助我們蒐集資料、解決問題、協調關係三個方面。老師一直很信任我們,她很少抽查我們是否在學,學了什麼或學的怎麼樣。所以在這種監督很少的自由環境下如果你不夠自覺,你是很容易效率低下,走神,甚至偷偷幹不該乾的事。

那時我常去微機室,不少同學都問我在那裡幹什麼。我說我在那裡調程式。他們又問我你是否可以隨時用電腦,可以上網?我說可以。這時他們總會偷笑著說“你們太幸福了……”我知道這句話是有言外之意的。在他們看來我們幸福是因為我們有條件做許多他們要想盡辦法才能做的事,比如玩遊戲,上QQ,看電影,看球……對我而言這真是太容易了,只要輕點兩下滑鼠一切都可以實現。可是我可以毫無愧色的說,我從來未在機房裡做過那些事:

我沒有玩過一次遊戲,一次也沒有

,哪怕是“掃雷”那種小遊戲;雖然我經常上QQ,但我只是利用QQ和老師和全國各地OIer討論問題,我從未用QQ交過什麼網友等等;我上網蒐集的資訊都是和奧賽或學習有關的,

我沒有看過什麼娛樂新聞,也沒看過一次比賽;我沒有看過一次大片消遣

,我唯一放鬆的方式就是聽歌,那也是在很累的時候,實際上我的主機箱上基本不插耳機……因為老師有自己的教學任務很少有時間監督我們,所以做到上面幾點只能靠自覺。想想那些在微機課上費盡心機想脫離老師監控偷偷上網的學生,你就能明白抵擋住網路的誘惑力需要多少自制力——特別是在沒有監督的情況下。

現在你或許能明白,我開始列的那些資料並不是虛構的“奇蹟”,他們是靠自覺和自制從1+1開始積累起來的。壘到一定高度,自然會夠到一等獎。

二、激情和強烈的動機

五年比賽,第3年才衝出萊州市,第4年才拿到一等獎,中間那麼多失敗和挫折,沒有點激情,沒有強烈的動機,真的很難堅持這麼久。我想這也是我們和其他科奧賽選手差別的地方。我們並不像他們只把奧賽當成一種老師安排的課外學習,

我們真的把奧賽當成了生活的一部分,全身心的投入,夢想一個美好的結局。

或許我和WFL的一個差別也在這:我的動機比他強烈,目標更明確——就是要拿一等獎,不惜一切代價要拿到。我覺得正是這種激情地投入使我能釋放全部的潛能,把力量拼到極限,投入那麼多時間,看那麼多書,做那麼多題。當然我和WFL在目標和動機上的差異並不是憑空產生的,這是由我們所處的環境不同造成的。我強烈的動機來自壓力,因為那時我遇到的反對和阻力比WFL多很多,因此我的壓力很大,我沒的選擇,我只能拿一等獎。現在看來我的思路對的,沒有這樣明確的目標和強烈的動機,我拿不到一等獎,至少不會在高一就拿到。

三、能稍微吃點苦

搞奧賽的那段時間裡,我常拿出一篇文章來讀。這篇文章就是我期末考試期間貼在牆上的那篇文章《人必須要有點精神》。文章講的是中科院計算機所“龍芯”課題組的故事,講中國第一塊高效能CPU誕生的經過。文中有許多打動我的話,給我很大的激勵。像下面這段:

有好幾次,他在早上六、七點鐘開啟實驗室的門,發現有些人手裡扶著滑鼠就靠在椅子上睡著了。這樣的場景常常使他忍不住想落淚。但胡偉武還是叫醒夥伴們,詢昨天晚上的進展,並鼓舞大家接著幹——他開玩笑說,有時候覺得自己比“周扒皮”還狠。胡偉武有一個叫張福新的學生,在龍芯驗證晶片出生前的兩個月中,很少在凌晨4點前睡覺。有一次,他們在深夜等計算機的執行結果,聊天時說到了生死。張福新說最不希望老死,看著自己的生命一點點被耗盡。

還有胡偉武的一段話:

胡偉武動情地說,我們有一種觀點,我們現在落後這麼多,別人不比我們笨,如果大家都一樣一週五天,一天8小時上班,恐怕很難趕上人家,惟有像當年搞“兩彈一星”一樣拼命,至少得累死一批人,中華民族才可能不受壓制,才有可能實現民族的偉大復興。

我感覺我還是從這篇文章中“稍微”學了點吃苦精神。之所以說我是“稍微”吃苦是因為我真不敢把我吃的這點苦和他們吃的苦相提並論。但我卻不是一點都未付出,就像前面說的,

高一一學年我幾乎停掉了所有體育、活動、自理課

,這些其他同學最幸福和期盼的課卻不屬於我。記得高一下學期停下奧賽輔導後,我第一次上了一節自理課——那也是那個學期最後一節自理課了。回到宿舍我躺在床上看外面剛下過雨的白濛濛的天空,我感到了一種很大的幸福——對比那些在計算機前抓著頭髮冥思苦想的“自理課”,對比那些眼睛被電磁輻射烤的乾澀的“自理課”,我真的感到很幸福,這樣簡單的幸福,能在自理課回宿舍躺躺的幸福。

還有一點,我想班上的同學也會有印象。

那時我和WFL的晚飯經常只是一碗泡麵。

當時下午第四節我們常在機房,晚自習第一節又常有副課自習。遇到這種情況我們常常不去餐廳吃飯,一直靠到六點半再到科技樓下的商店買泡麵,在辦公室泡開。就是等面泡開的這段時間我們仍要抓緊時間做題,或咬著叉子討論問題(WFL的這個形象給我留下了很深的印象)。有幾次討論太投入忘了那邊還泡著面,等到想起來時面已經爛的可以了。

我在家中本來已經養成了吃完飯半個小時內不做任何運動或學習的習慣,但在那時也只能打破了。

吃完飯我只能聽一首歌當作休息或做一些整理資料夾這樣的相對不太用腦的事,這就算休息了。

有時我們調程式實在到了關鍵時候,往往連面也不去買了。一直要等到下第一節課我們趕回教學樓上第二節課再順路買一碗麵、泡上,下第二節課課間再解決掉。那時化學老師真好,有一次她發現了我們這種情況,竟讓我們在她的課上先吃飯,真太感激她了。不過說句實話,空著肚子上課和脹著肚子上課感覺一樣不強。

那時教室裡經常瀰漫著一股泡麵的味道,真對不起我的同學們。

還有那段601歲月,還有那段早上4點半起床補課的歲月……想到這些我才敢說我們確實“稍微”吃了點苦。一點苦也不吃,沒人能拿到一等獎,就是這樣!

資訊學競賽,我憑什麼能拿到一等獎?