CTSC&APIO2009 收穫與感想
今年有幸能再次參加CTSC和APIO的比賽。CTSC(Chinese Team Selection Contest 中國國家隊選拔賽)在北京大學舉行,APIO(Asia-Pacific Informatics Olympiad)在天津大學舉行。CTSC號稱世界上最難的OI比賽,不無道理,因爲要從國家集訓隊的20位精英中選出4位,其難度可想而知。APIO是一個新興的國際區域性比賽,始辦於2007年,今年是第三年。APIO賽題難度不及NOI,接近於IOI。
出乎意料的CTSC
5月4日早晨,馬浩、我、趙陳晨和王國正老師乘坐動車D134次前往北京,中午抵達北京西站。乘坐公共汽車到了北大附近一個的招待所,住宿條件好得出乎我的意料,按照杜子德的說法是“準四星”的水平。下午去機房使用比賽環境,出乎意料的是,比賽環境是Windows,有VC6.0,VS2003,VS2005,VS2008等強大的IDE,而提交方式是poj。這是我參加過的任何一次比賽都沒有遇到過的情況。
CTSC的兩試中,poj還掛了一次,導致第二試延長了很長時間。做CTSC的題純屬被虐,所有的題我都是樸素搞定的,於是拿到了銅牌。不過收穫還是很不小的,尤其是瞭解了A*算法,模擬退火等有用的方法。
更大的收穫是認識了張昆瑋和王謨大牛。和張昆瑋大牛討論問題,真是聽君一席話,勝讀十年書。張昆瑋大牛有些話令我十分震撼,例如“網絡流問題建模不是很難,關鍵難在算法的實現上”,“我不會寫二叉堆”,“平衡樹的問題我絕大多是都是用線段樹搞出來的”,“線段樹怎麼能寫成遞歸呢?”,“求強連通分量的算法5行”,“計算幾何本不難,只要別拿精度來開涮”……這是我與大牛的第一次近距離接觸,這才叫真正的大牛。
我、馬浩、趙陳晨這幾天把北大內部及周邊轉遍了,5月6日晚上我、張昆瑋、趙陳晨、馬浩租了四輛自行車,騎車去了鳥巢,路途來回有近20公里。在路上,我多次想要半途而返,但是在趙陳晨和張昆瑋的說服下,我們堅持騎車到了鳥巢廣場。一年前也曾來過這裏,那時還是鐵網圍牆,現在已經成了一個旅遊勝地。水立方在夜晚的燈光下,顯得十分優美別緻,令人有一種如臨仙境的感覺。近距離地望着鳥巢的巨型鋼架,我覺得自己十分渺小。鳥巢旁邊還有一條河,在夜晚的燈光下,河水泛出夢幻般的光芒。就在我陶醉在這種美景中時,我突然不禁要問,到底爲什麼要修建這樣華麗的鳥巢?國家修建這樣龐大的工程,耗費了無數金錢和資源,這都是納稅人的血汗,是誰允許把這些錢花在修建一個巨大的體育場上?
APIO與北洋大學
5月8日早晨,我、馬浩以及王老師乘坐火車前往天津。抵達天津站後,我們就受到了熱烈的歡迎,有天津大學志願者來接站。和志願者聊天,我瞭解到了天津大學的歷史。天津大學的前身北洋大學是中國近代第一所大學,創立於1895年。這是一所不折不扣的工科大學,至今其化工系都排在全國第一名。然而令我失望的是,進入天津大學卻沒有感受到想象中的那種深厚的文化積澱。令我印象深刻的是,北洋大學內有4個不小的湖,這在北方是罕見的。
下午去試機,令我不滿的是,居然機房要按省進入。河南省就只有我和馬浩兩個人,於是就排在了將近最後。至今我都不知道他們爲什麼這麼搞。次日上午參加APIO2009的比賽,比賽還分了正式選手與非正式選手,大概是NOIP2008中拿到了330分或更高的,就是正式選手。正式選手有一個帳號,可以在http://apio2009.iarcs.org.in/上面提交。
拿到試題,我的第一感覺就是:不難,但在仔細一看,又覺得也不簡單。首先我就看中了搶掠計劃這道題,明顯的收縮強連通分量,然後動態規劃就行了。但是500000個點的DFS遞歸極有可能棧溢出,我就先寫了遞歸,心想如果有時間再改。接下來我看到第二題,一開始就想了一個錯誤的O(N^2)動態規劃,然後就開始想辦法優化了。花了好長時間在這個題上,我終於想出了O(NlogN)的方法,還歡欣鼓舞地寫了出來,直到講題之前我都不知道自己的算法本身就是錯的。最後時間不多了,開始做第一題。不論如何,先要拿住30%的分數,於是就寫了暴力枚舉。最後只剩不到一個小時了,此時我已經暈了,根本想不出正確解法了,於是就寫了隨機爬山法,只可惜沒有拿住分。
第二天去看成績,我發現第一題30分,第二題0分,第三題居然93分!一定是棧溢出了,手動測評後果然不出所料。令我詫異的是,馬浩同樣的DFS,他就能拿到100分?!而且手測同樣是要溢出的,但機器測出來是滿分!我的123分,排名66,應該是銅牌了。但最後一天頒獎出乎我所料,我是銀牌最後一名!原來我的程序報到官方後,第三題成了100分。
某日晚上吃過晚飯,我和馬浩走出北洋大學的南校門,進入了南開大學。這兩所大學距離之近,可謂一牆之隔。南開大學給了我另一種感覺,它比北洋大學更精緻,更優美。漫步在南開大學之中,猶如置身一片園林,而行走在北洋大學只能,好似穿越一個平原。南開大學偏重於文科,而北洋大學精研理工,也許這就是區別吧。實際上,我更喜歡南開大學的校園。
一些感想
這次CTSC和APIO歸來,我更多的是認識到了差距。我想,許多知識我都還沒有掌握,需要努力的地方還很多。例如平衡樹的靈活運用,動態規劃的優化,貪心算法的設計和證明,隨機算法、模擬退火、A及IDA,樹鏈劃分,子矩陣問題等等等等,都是我需要掌握的。關於計算幾何和博弈論,我只想淺嘗輒止,畢竟時間不允許了。今日看到距離NOI2009也只有不到80天了,我一定會在這些日子裏內羽化而登仙,涅磐而重生。