哈爾濱地區賽已經結束一個多星期了,應bf大牛的要求,寫篇比賽總結。順便總結下自己大學三年的ACM經歷,希望能給ACM的師弟妹們滴點幫助…
一、初識ACM
剛來大學,完全不知道編程是什么東西,只是聽師兄說大一的C語言課很重要。于是乎,很努力的學C語言。學期快結束時在室友小東那得知有個叫ACM的程序設計競賽,對編程的提高、算法(那時還不知道是什么,只知道是很高深的東西)研究以及邏輯思維有很大幫助。而且宿舍室友志同道合,于是宿舍四人都設定加入ACM隊的目標,計劃寒假回家自學并A題。(但寒假回家只有小東一個人做了10幾道水題)
第二學期不久便迎來了ACM校賽,我和小東、CQH組隊參加。只是知道ACM簡單輸入輸出規則的我們,比賽時做了幾道水題就拿了個獎(好像是一等獎)。校賽后并沒有被招進ACM隊(其實那時候學校ACM隊沒有集訓室,都是自己找資料,自己上網做題,不會的自己搜報告),仍然是自己看看數據結構,做做題。而我又特別的懶,那一年花在ACM上的時間很少。暑假集訓由于個人原因沒有參加,在家也只是做了幾道水題而已。
直到大二第一學期末,韓總找了我們幾個大三和大二在斷斷續續搞ACM的,要求我們寒假回去做題。希望在下學期的校賽取得好成績,參加省賽。寒假在家又看了一點書,做了幾道題。
大二下學期,期待校賽期待了很久,直到臨近省賽才開始。校賽的網絡賽都是水題,惟一一道不是水題的由于數據比較弱,也被我水過了(也是由于快速的A了那些水題,得到了William大牛的欣賞)。正式賽時我做得很差,勉強進入前六。
二、ACM之旅
08年校賽過后,就同William和HJR大牛組隊,正式加入我們整支隊就HJR大牛實力最強,我和William只會A水題。HJR大牛比較內向,對省賽很看重,他的緊張和保守也給了我們莫大的壓力。省賽只是做了四個水題,拿了個銅。
省賽過后主要的是應付課程了,花了一個多月時間看書、復習,考了個不錯的成績。(搞ACM要選擇性的去上課,但千萬不要掛科,掛了科你要得浪費時間在重修上。)
省賽過后集訓隊有了自己的集訓室了,而接下來的暑假有了比較正規的訓練。暑假的訓練使自己提升了很多(整個集訓隊的隊員都提升很多),給自己滴點信心去參加08年的地區賽。地區賽前,由于有新秀的出現,我的隊員變為William和DieIng,地區賽前瘋狂的訓練,使我們整只隊總體實力大大提升,團隊配合也有很大的提升。
08年地區賽網絡賽五個賽區的出線名額都拿到了,而且合肥可以去兩只隊。由于經費和實力問題,我們隊選擇了比較近的殘疾人賽區--合肥。整個比賽我們兩支隊都很郁悶,實力加運氣都不好,最后我們只是勉強拿了個銅。
三、ACM又一階段
08地區賽過后的目標是下一年的省賽,我和William把它當成自己的退役賽,希望能有個比較好的結果結束自己的ACM之旅。我們按著08地區賽分的方向,每人努力精攻自己負責的方向。DieIng負責圖論,William負責模擬題和組合數學,我負責DP(和貪心),而我自己也開始學點圖論,看點雜細的東西(如hash、二分逼近等)。省賽前的珠海給了我們一次練兵的機會,正常發揮。省賽時只是做了幾道水題,另外該出的題沒出,拿了個銀。就這樣退役,雖然很不甘心,但地區賽需要把機會留給師弟們去鍛煉,。遲遲不愿寫總結,想讓這樣經歷默默的埋在自己心里)。
之后便進入應對學期課程的忙碌和暑假的實習。雖然認為自己ACM之旅已經結束,但還是喜歡偶然上OJ做做題。暑假實習被BS后,回家過最后的暑假。臨近開學,突然收到DieIng大牛的短信,希望一起組隊參加地區賽,我不喜歡自己去占了師弟去參加地區賽的機會,就同DieIng大牛說我考慮下。之后又接到韓總的電話,一直都受韓總重視,不好意思拒絕,加之對DieIng大牛仰慕(憑他自己一個人單挑地區賽應該可以拿個銅,希望我和july的加入能使成績有所突破)就答應了。
之后是邊找工作,邊抽時間訓練… (哈爾濱地區賽的準備,雖然是抽時間的,但到臨近比賽時基本是每天一場,慢慢的練出感覺…)
四、哈爾濱地區賽總結
(copy july的,略做修改)
前序
比賽前一切還是很輕松的,在機場很榮幸的被學校acm的鼻祖ziliang給忽悠了。
比賽在體育館看上去還是很爽的,能感受賽場上那種氛圍(不想省賽)。這個賽區的參賽隊伍是史無前例的弱,看不到那些強隊PK很可惜。但試機時的題目很難,三道題我們只出了兩道,然后試試各種錯誤就結束了。試機后我們認為隔天的現場賽題目應該也比較難,出題數相對會比較少。(罰時應該會拉開差距)
現場賽
比賽開始照例july看前,DieIng看后面的,我看中間的。E題題目很長,我大概掃了一下,看F題。A題july一看有兩個數獨的圖,直接交給DieIng,DieIng掃了下output看到是求解的個數馬上得出結論:不會。F題沒看多久,DieIng就操了一聲,振奮人心,說K題水題!同我講了下后就敲,(我們采取多次出數據,晚提交少罰時的策略)我出了點數據,過了,提交后很快就秒了。B題是一個簡單的DP,july同我們講了下,DieIng講了下他的想法,用dp[k]記錄當前去k能獲得的最大值,我想了下狀態轉移,同DieIng講了下,又很快被秒了。之后我繼續看F題,DieIng很快看穿了J題模型,講了下,算下復雜度用KM沒問題,DieIng就上模板了,我幫忙差錯,(只是找出一個小錯誤,另一個沒找出,結果導致一個WA),又秒之。之后刷了下board,發現D題有兩隊過了,july同我們講了下題意,然后去推I題,DieIng大牛認為費用流可以建模,但好像復雜度太高。我和他研究了一下,可以只枚舉源點,之后上模板、建模、測試。又是1Y。沒想到平時訓練頻繁wa的我們現在1Y率還是很高的。
4題出后大家剩下的題都很少人出了,大家又分開了想題,過了n久,直到進入G的死區。G題july跟DieIng討論后是直接在trie樹上搜,剛開始覺得會超時,但看那個edth最大只有2,所有還是可以的。DieIng先上了他的模板,july寫了個dfs,剩一個來鐘,我們覺得只攻一題,所以我也加入了G題,然后發現了種種問題沒有處理好,我們一直邊說邊改來改去了,感覺亂七八糟的,最后都不知道改成什么樣了,調到最后還是沒調出來。
結果就這樣拿了最后一塊金。一個幾何,數論…都沒人會的隊伍也能拿金…這個賽區的參賽隊伍真的是史無前例的弱。
后記
比完又留多了一天,又可以當是去旅游。在哈又不下雪,一坐火車走就來暴雪,60個小時的火車很惡心,除了吃喝拉睡就是打牌,韓總教july打牌時說,這其實也是一種數據結構...(Orz韓總)
五、ACM總結
回望自己的ACM經歷,總結如何搞好ACM,如下:
1、 盡早行動,結緣ACM
可以從做題開始,先拿水題練編碼能力,然后看數據結構,繼續練題…
2、 堅持
結緣后,要堅持,剛開始的很長一段時間可能很難看到成果,但如果你堅持了,時間長了,自然會有一個質的飛躍。(不要像我一樣,斷斷續續的搞ACM,那樣提升很慢,一段時間沒做題了,再做題又得重新找感覺。)
3、 樂于同他人分享
如果可能,多和周圍的同學一起訓練、切題,也可以學DieIng大牛他們一樣聯系其他學校的大牛一起切題,討論。多同大牛沒交流,有些題目你想很久都沒結果,但經大牛點撥,立刻明白,而且以后遇到同種類型的題也很容易想到。(和DieIng大牛一起訓練學到很多)
多寫解題報告,最后寫思路,而不要貼代碼。每做一種類型題后,寫下總結。每段時間的訓練后寫寫總結。
4、 不要放棄課程
其實很多課程會用到算法,而ACM的很多題是課程里出現過的模型。成績不錯也能讓你請假更容易,也不需浪費時間在重修上。
5、 讓ACM成為一種習慣
讓ACM成為一種習慣,即使不參加ACM比賽,有空上OJ做做題,鞏固下編碼的感覺,鍛煉邏輯思維,讓思考問題如何建模成為一種習慣。
GDUT_longshen
2009-11-16
posted on 2009-11-17 21:49
longshen 閱讀(4799)
評論(1) 編輯 收藏 引用 所屬分類:
acm總結