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