11月22號的上海賽區比賽是我第一次參加的ACM區域賽。這次比賽給我留下了一段難忘的回憶。
19號下午我們從武漢出發,我抱這送給老婆的布娃娃,坐上了去上海的K12次列車,這是我第一次去上海。想到就要參加比賽,而且就要見到老婆,我很興奮。路上比較無聊,我就看具體數學打發時間。
20號早上到了上海,我見到了這個國際化大城市,感覺跟武漢區別不是很大,就是房子高了些。我們住在良安大飯店,是一個比較高級的飯店,Snoopy堅持要跟我住一起。我們安頓下來以后,洗了澡,第一次洗泡澡很舒服,躺在浴缸里頭感覺很放松。洗完澡我們Silence隊聚在一起討論了一下比賽的策略。晚上睡得很好,呵呵,比梅六的垃圾宿舍不知道好了多少倍。
21號練習賽,不怎么正式,先是開幕式,一大隊人上臺講話,然后是教練會議。我向來對開會比較反感,就坐著無聊了一會。中午在上海大學食堂吃的飯,垃圾。然后馬上就是練習賽了。我看到北大的cici,長得好高啊,比我高,而且挺漂亮的,不由得羨慕一下她老公。練習賽比較亂,系統是FC6,我們一進去拿到題目,按照慣例,我看前面,ooeyusea看中間,magiii看后面。第一題和第二題超級簡單,我一個人搞定了,剩下一題很難,我們想出了算法,可是難以實現,代碼復雜度太高了,于是決定放棄這一題。PC^2出了問題,一直登不上去,我們寫好的代碼無法提交,后來我叫了staff,終于能登上去了,馬上交,都是一次Yes,但是由于交得太晚,排在比較后面。不過無所謂,練習賽不要緊,我特地讓ooeyusea和magiii都上去熟悉了鍵盤,因為平時比賽都是我寫的最多,我怕他們不熟悉環境,萬一明天出問題就不好了。交了這兩題以后,我們寫了一些第三題,最后發現我們無法完成,就轉去測試judge。無聊了一段時間以后,練習賽結束了。
接下去是sun的講座,更無聊。但由于sun是下一站西安的贊助商,也沒有辦法,只能聽啦。magiii繼續在機上熟悉環境,我搬了張凳子去聽講座。都是些廣告,送的禮品也很垃圾,是java的玩偶,我看做工太挫,也沒欲望去搶答問題贏得獎品了。最后我們每人填了張調查表,憑表去領了一件T恤。
接下去是晚宴。大吃了一頓以后Silence又聚在一起,我很明確地說,正式比賽的策略,就是努力把簡單的題目做出來,先搞定最簡單的兩題,然后再想第三題。我知道我們的實力只能允許我們采用這種策略。
22號正式比賽了。我們很早就起床,到比賽場地發現來得太早了,等到9點50才放我們進場。很快比賽就開始了,我拆開密碼袋,magiii拆開試題袋,按照慣例看題。我看前面3題,A題比較長,我先跳過,看了BC兩題,都不怎么好寫,然后看A,發現A是簡單題,馬上上去寫。這是他們在看其他的題目。很快我的A寫好了,第一次提交,返回RE,這讓我大為驚訝。magiii看了一下,發現我打錯了一個字,改過來又交,馬上返回Yes。就這樣我們拿到了第一個紅色的氣球。這時我看見前面清華的兩個隊已經做了兩三題了,立刻刷rank,發現C.D過了兩三個隊了,I也有人過。我決定看C,發現是一個樹,題目里頭的數據比較嚇人,其實沒有那么大,我就上去寫,很快又寫好了,交,返回wa。我看了一下,發現數據范圍是long long,而我用了int,馬上改過,又交,又是wa。這時,我已經找不出我程序的錯誤了,接下去是我們的惡夢……magiii的D一直徘徊在TLE和WA的邊。我反復提交自認為沒錯的C,甚至還寫了兩個程序去測題目給的是不是樹,結果返回的確是樹,更加讓我確信我的算法的正確性,可是提交就是wa。然后magiii暫時放下D題幫我看C,測了一個long long的數據,馬上發現有問題,我才知道原來是abs函數的問題,它返回的是一個int,而不是long long。我就自己寫了一個abs,提交,終于返回了Yes。第二個氣球來得很不容易。我又刷了rank,發現D和I是我們有希望搞過的,就分配任務,magiii繼續寫D,我和ooeyusea看I。過了一會兒,magiii艱難地把D寫過了,插上了第三個黃色的氣球。全隊的注意力都集中在I上。這時離比賽結束還有1個多小時,我說,我們還來得及,大家全力以赴搞I。I是一個關于楊輝三角的數學題,我畫了一張大的楊輝三角以后,發現在幾何上這個題目是個分形。我就大叫,是這樣的,然后把圖畫給他們兩個人看,又讓magiii寫了個小程序打印楊輝三角,以求得到更多的信息。然后我就一直構造I的遞歸解法,可是一直有些問題,ooeyusea也一直在考慮這題。在一直沒有進展的情況下,我又刷rank,發現I題過了很多人。這時我很急躁,拼命地考慮我的算法的問題,時間一分一秒地流逝,我沒有任何進展。大概剩下40分鐘的時候ooeyusea上去寫他的算法,過了樣例,大家都很高興,交了一次,返回wa,接下去的時間簡直是地獄,我們一直修正ooeyusea的算法,不斷地提交,都是wa,大家都很著急。我已經進入了盲目提交的狀態,覺得有疑問的地方就改一下,然后馬上提交。這樣一直持續到最后3分鐘。ooeyusea忽然發現他的算法不能處理p=2的情況,在時間非常緊迫的情況下,我修改了他的程序,加上了p=2的情況判斷,最后交了一次,還沒有返回結果比賽就結束了。后來證實那個判斷是錯的,分形的算法是可行的,但是ooeyusea的程序有些問題。
比賽結束以后我們回到飯店,我老婆來看我,抱到了那個布娃娃。第二天我們上街逛了逛,老婆要上課,回去了。我們也回到飯店,下午就坐上了離開上海的火車……
總結這次比賽的經驗,Silence作為一支不成熟的隊伍,第一次參賽,能取得這個成績應該還是不錯的。但是這次比賽讓我看到了Silence的許多不足之處。最致命的就是在比賽中比較急躁,想出算法了寫下來,除了通過樣例,沒有經過其他任何測試就瘋狂提交,這造成了我們罰時嚴重,而且對一些特殊情況完全沒有考慮到。如果我們較早測試了I題p=2的數據,就會發現算法的問題,很可能就會把這題做出來。如果我測試了C題long long的數據,很可能一次就通過了,不用交8次。如果magiii測試了他的D,也許能減少幾次提交。甚至如果我寫完A,不用急著交,測試一下大數據,就能夠一次通過了。可是沒有這么多如果,比賽已經結束了。我認為,這個習慣是平時練習賽時我們不注意罰時養成的。平時內部訓練只有三個隊,主要區分是在題數上,我們就輕視罰時,但是到了大型比賽,罰時就是很重要的了。說什么都沒用,我們要做的只能是改掉這個壞習慣。還有,事后聽snoopy說,I題在具體數學里有相關公式。Silence隊中我負責看具體數學,沒有發現這個公式是我的責任。我應該更仔細地研究具體數學。