作爲一個ACM搞了沒多長時間的人,與其說是談經驗倒不如說是對我ACMer生涯的總結,也算是對新人的一些告誡和路線指南吧!
- 初入ACM界
怎麼說呢,第一次聽說有這麼個東西是在剛學完數據結構的時候,聽說學校有這麼個神奇的組織專門參加國際大學生程序設計大賽(ACM),而且是需要有很好的數學功底和精湛的編程技藝才適合參加,上網查了查,能在這方面有所建樹那可是會被計算機界的各大龍頭公司所認可並錄用,作爲一個有理想有抱負的計算機青年,我心動了。。。想當時我也自認爲對數據結構有所研究,就滿懷着希望加入,從此踏上了不歸路。。。。。。因爲學校在這方面不重視,學校有一個ACM實驗室,在我之上只有沒幾屆的學長在做這個,而且沒有什麼成就,加入之後學長就說“好好做吧,爭取能做出點成績,一定要堅持住做下去”我就想了,這個真這麼枯燥無味,我也是比較愛好這個吧,難道還堅持不了,但事實證明,在不遠的將來,我才領悟到堅持到含義。。。。哎,剛開始寫怎麼就偏離主題變成感情抒發了,完全忘了這是技術支持文檔,看來真的被傷了啊。。。還是步入正題吧,不過真心想搞的人一定要在心裏刻下一個詞-----堅持
- 初學者應該做的
- 找到自己學校稿這方面的人,爭取能加入他們,一方面是更多的獲取前人的經驗,另一方面這樣可以避免走彎路,而且有些人和你一起搞你纔不難麼容易放棄,如果被你找到了這麼一羣人,恭喜你,你是最有希望在這條路成功的人,下面再看不看已經不重要了,他們會慢慢告訴你。如果沒有,兄弟,你要付出的努力可就多了。
- 在搞這個之前最好能掌握一門編程語言,我說的掌握不是能編,是能進行熟練的調試程序,因爲搞這個到最後真正困難的其實是把一個你知道的思想調出來。不過如果你有一顆不屑努力的心,慢慢鍛鍊也未嘗不可。
- 在國內的在線測試平臺註冊一個賬號,北大、杭電什麼的都行,關鍵是得有一個。
- 然後就是漫長的練習過程,上網找一些模塊學習順序,個人認爲先輸入輸出(這個主要是熟悉平臺),再數論,再排序,再搜索,再貪心、動態規劃。在你有充足的時間的情況下,還是分模塊循序漸進的練習,方法就是上網找相關的題,花時間練、調試。剛開始一般比較順,到後面花個幾天甚至幾周調一道題很正常,還有可能調不出來,搞ACM的真的傷不起啊。
- 算法學習
- 剛開始練習經典算法,並精簡代碼,練到非常熟爲止,也是對變成能力的提升。
- Tips
- 會使用平臺的討論區,POJ的是每題的discuss,在網頁下面,和提交在一起,這個往往會給你一些重大靈感
- 多上網搜大牛的解題報告,ACMer中真的有那種巨強的人啊,看他們的代碼簡直是一種享受(很希望POJ能把每道題提交的最好的程序開放出來,我一度很疑惑那些時間0、空間0的程序是怎麼編出來的)
- 自己也要做解題報告,這個不一定發到網上給別人看,到了後期自己再看其實是一種再學習,有很多精妙的東西記錄下來纔不會忘
- 總結經典算法、子函數、輸入輸出格式,因爲比賽時是可以看資料的,當你發現有道題可以直接拿以前的函數來用,或稍加修改就能用,那豈不是在比賽中比別人佔了先機。網賽的時候經常看到比賽開始一分鐘就有隊伍提交了,這就是總結的好處
- 對於比賽,中國一般是五個賽區,官方說一般一個隊伍只能報2、3個賽區,但這個必然都報啊,競爭這麼激烈,有些ACM大校都是N多組做到實驗室裏刷的,讓我們這種小隊伍情何以堪,而且註冊時一般都是有馬甲的,因爲比賽既要算做出的題目個數,也要看提交的次數,而且一般是不怎麼查的。不過我感覺如果足夠NB的話,可以完全無視提交次數,單憑正確題數即可進入現場賽。
我的經驗就先這麼多吧,有什麼需要網絡是你最好的幫手,最後告訴你一點:堅持,堅持,還是堅持
預祝各位在ACM的道路上成功。