其實是轉載,,這是樓教主寫的(網上發現)
看完好生感動。。好生勵志。。
分割線--------------------------------------------------------------------------分割線--------------------------------------------------------------------------
利用假期空閑之時,將這幾年GCJ,ACM,TopCoder 參加的一些重要比賽作個
回顧。昨天是GCJ2006 的回憶,今天時間上更早一些吧,我現在還清晰記得3 年
前,我剛剛參加ACM 時參加北京賽區2005 和杭州賽區2005 的情況。
2005 年ACM-ICPC——酸甜苦辣
我進入清華大學開始本科學習的時間是2004 年8 月,在進入清華大學的第一
年裡,由於基礎課學習比較緊張,再加上電腦系不允許大一學生內建電腦,我沒
有參加2004 年的ACM 比賽。不過在大一一年中沒有停止這方面的練習,對ACM
還是熱情高漲。
大概在2005 年7 月底,與同班同學shell(貝小輝)和superzn(張寧)一起
決定組隊參加ACM 比賽。對於隊名沒有太多的想法,就隨便取了一個字典序靠前
一點的bomber。隨後進行的幾場訓練中,我的編程狀態一直保持得很好,訓練比
賽的主要方式都是:我主寫程式,shell 和superzn 負責翻譯題目,思考演算法和測試。
這種組隊模式一直沿用到我們後面的所有比賽中。
2005 年底,我們報名參加了2005 年的北京賽區和杭州賽區的比賽。順利通過
了預賽進入了現場決賽。記得當時北京賽區預賽的時候,我和superzn 一起在參加
百度之星程式設計大賽,shell 依靠一人之力過了6 題,最後以第二名的資格參加
北京賽區現場比賽。
北京賽區:
2005 年的北京賽區地點設在隔壁的北京大學,由於交通非常方便,我們沒有
和大部分選手住在一起,不過也沒有參加Java-Challenge 和晚上的表演。
練習賽之前,說到比賽位置抽籤,本身意義不是很大,可是鄔老師神奇的RP
把兩隻清華的隊伍抽在一起,結果練習賽進行了一半,另一隻清華的隊伍THU1
(隊員是:吳景嶽,栗師和金凱,好像後來隊名改成了DreamCatcher,不是很確
定)被要求換到一個比較遠的地方,理由是有些學校覺得這樣不合理。後來很多賽
區也出現過隊伍座位在一起的情況,鄔老師的RP 果然不是蓋的。
記得練習賽時和複旦的LemonTree(盛城)一起在場地裡閑逛,結果果然不到
10 分鐘就被要求回座位了。還有當時比賽場地是一個體育館,有些隊伍把氣球放
飛之後氣球就飄在天花板下了,總裁判李文新老師還威脅我們說,如果明天正式比
賽把氣球放飛,就不算通過相應的題目,除非有辦法把氣球取下來。
然後就是比賽的過程了,下面有底紋的文字是我找到的當時留下的比賽總結:
E:快速排序。5 分鐘1Y。
我想5 分鐘的時間可以爭取這幾年ACM 國內賽區的最快出題記錄了吧。
G:二分答案+最小產生樹。25 分鐘1Y。
這題就是經典的最優比例產生樹問題,我們一致認為這題比較簡單。不過後來
被李文新老師批評了,說法是誤導其他的隊伍。不過說到最優比例產生樹問題,
TCO2006 的時候fwj 和tomek 竟然都沒有見過這道題目,這題可是源於POI 呀。我
想我們認為這道題目簡單的主要原因是我們都在冬令營上見過這到題目,如果第一
次看見,想出演算法可能確實需要一些時間。在這裡向被我們影響的隊伍的道歉,最
終G 提交了200 多次,但是只有8 個隊伍AC。
C:二分圖最大匹配。42 分鐘1Y
題目要求計算一張圖的最小覆蓋集,可能唯一的tricky 是發現圖是二分圖。
D:遇到了一定的困難,發現A 很簡單,於是先放一下
D 是一道比較綜合的題目,設計一些簡單的計算幾何和字串處理的知識。
A:簡單的幾何問題,出現了一個低級錯誤,提交了3 次均為WA。
A 是北京賽區最簡單的題目,我的程式裡犯了一個很低級的錯誤,可能也是經
驗不足造成的吧。
D:重新寫,但是沒有考慮一種情況,WA 了1 次。
87 分鐘,複旦的Abuacus 過了4 題佔據了Rank1。由於隊伍模式的原因,我們
在還有很多簡單題目的情況下卡住了長達30 分鐘。
A:shell 突然發現了A 程式中的低級錯誤,105 分鐘AC,重新奪回Rank1。
這是很重要的一步,現在想來如果沒有這個發現,後果可能不堪設想。
B:二分答案+2SAT。129 分鐘AC。
B 是一道明顯的2SAT 問題,由於題目比較長,我們沒有很早發現這道簡單題。
D:發現了D 的沒有考慮的情況,140 分鐘AC。
看了一個board,那時Abuacus,Eccentric 都只有4 題,能夠在第一次參加正
式比賽就做到6-4 的領先,當時心情很激動,不過由於缺少經驗,也影響了接下來
的發揮。其實,現在回想起來,這次比賽其實是一個很好的AK 的機會。
F:DP。程式比較複雜,WA 了4 次。
F 是一道比較複雜的動態規劃的題目,其實WA 的原因是一個應該用int64 的
地方,我們使用了int,這個地方的確很難發現。
H:F 一時無法AC,只好轉功H。H 就是普通的類比題。開始沒有考慮坦克和
炮彈可能在1/3 秒相遇,WA 了1 次。
比賽還有一個小時,封板。
H:shell 發現了坦克和炮彈可能在1/3 秒相遇的情況,250 分鐘左右AC。
對於我們這種組隊模式,當主寫程式的選手狀態不好的時候,很容易出現連續
卡題的情況,這種情況的出現很不利於水平的正常發揮。在北京賽區的比賽中,我
們很有幸沒有出現連續卡處的情況。
記得,當時北京賽區的Judge 的半自動的,就是說如果結果是AC,速度就會非
常快,否則由於人的介入,不能AC 的提交往往需要等一段時間。我們第2 次提交
H 之後,沒有得到很快的回複,以為已經WA 了,於是我和superzn 繼續測試一些
資料。但此時,突然有一個mm 從左邊走過來插氣球,這個氣球也成為了全場唯
一的藍色氣球,這個意外之喜最後成就了第一個分區賽冠軍。
F:下面就是痛苦地提交F,一直戰鬥到最後一刻,WA 了14 次,留下了北京
賽區最大的遺憾。
在最後時刻我們似乎發現了那個int64 的錯誤,不過當時思路已經比較混亂了,
沒能改對。F 的問題也導致沒有時間寫I,當時如果直接重寫後者換superzn 來寫F,
完全可以在比賽結束前AC。
比賽的大致過程如上所述,那個神奇的氣球,我現在仍然記憶猶新。最終有4
個隊伍攻破7 題,Abacus 的組成應該是盛城,timegreen 和suzhan 吧,Eccentric 中
我只記得辛韜,ZSU_Panku 中我記得Savior(陳實)。上述的老朋友之後見面的機
會就很少了,分區比賽也成為了我好需要老同學重要的交流機會了。
我ACRush 的ID 估計就是那時開始使用的吧,轉眼就已經3 年多了。
比賽前後還記得經常與複旦大學的吳永輝老師聊天,在那之後的每次比賽我都
能見到他年輕的身影。
現在回想起北京的分區賽,很有幸能夠在第一次參加ACM 正式比賽就獲得分
區比賽的冠軍。我想是由於現場氣氛對許多隊伍都有不小的影響吧,當時許多隊伍
都卡在幾道比較繁瑣的題目上了,題目的演算法性都不是很強。我大概從