来自一个大牛对ACM的总结
生活随笔
收集整理的這篇文章主要介紹了
来自一个大牛对ACM的总结
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
下面是我看到的一個神牛對ACM的總結,借鑒一下。本文源自網絡。
?
????先個人簡述下:07級本科,軟件學院,09-10年創新中心ACM組組長。ACM/ICPC亞洲區3銀1銅,東北地區2次一等獎,遼寧省2次一等獎。3年國家獎學金,2010年9月至2011年5月在微軟亞洲研究院(MSRA)實習。
以下是本人在大學期間參加ACM/ICPC的總結,以及相關的經驗教訓。
首先,先說說ACM對大學以及未來發展所帶來的利弊。
利:
1.毫無疑問,你的編程能力(注意這里不是軟件開發能力)會得到大幅度地提升。ACM比賽注重短時間地寫出正確的代碼,是完全正確的代碼。在ACM比賽中,只有對的代碼和錯的代碼(在現實生活中可不一定是這樣的),沒有一本正確的代碼。
2.你的算法能力會得到很好的鍛煉。在以前的教科書里,算法是計算機學科的核心。雖然現在的觀念淡化了算法的重要性,更多地注重軟件的架構和利益等方面,但是基本的算法學習還是必不可少的。扎實的算法和數學功底是計算機研究的必備條件,而這些正是ACM競賽所培養的。
3.ACM競賽講究三人組隊配合,這點很符合現實中的團隊合作,如何作為隊長合理管理團隊,如何作為隊員提高配合效率都是ACM比賽教會你的。
4.由于ACM競賽現場賽在各地舉辦,比賽的同時也可以領略當年的風土人情。本人自從參加ACM競賽,從南到北走過了不少城市,東三省的主要幾個城市都去過不止一遍。在比賽的同時,也結交了許多全國各地的編程愛好者,增長了見識。
5.ACM競賽由于其權威性,并能選拔出高質量的計算機人才,得到世界各大IT公司的支持。Google, Microsoft都曾贊助過ACM競賽,國內百度,有道也開始大力支持。同時各大公司也推出類似ACM競賽的選拔比賽,并給出高額的獎金吸引人才。Google Code Jam, Topcoder, Baidu Astar基本成為計算機頂尖人才進入這些公司的捷徑。我這次能進入MSRA實習,也是他們看中我的算法能力和編程能力,同時也是這些能力讓我很好地完成了實習工作。
弊:
1.正如上文所說,ACM競賽追求完全正確的算法和代碼,這與現實生活中的軟件開發和計算機研究有所不同。軟件開發很難做到完全沒有bug,而計算機研究更是在追求不斷智能的路上永無止境。同時,ACM競賽只要求代碼的正確性,沒有涉及代碼的風格以及相應的文檔配套,這會對以后的軟件開發留下不好的習慣。(當然,以上都是觀念及習慣的改變,如果想改,完全是可以改好的。)
2.ACM競賽需要長時間的積累,要想出好成績基本需要花費大學的大量時間,許多ACMer都是成天成天地刷題,熬夜參加練習賽。由于長時間的接觸電腦,導致身體健康情況,人際交往能力等都會受到一定的影響。
3.ACM的訓練及比賽都是個腦力與體力同時承受煎熬的過程。經常一道題目就會花費你1天乃至數天的精力,一場5個小時的比賽就像一場馬拉松,誰能堅持到最后,誰就是贏家。這里面的艱辛,只有正在投身其中才能體會。
4.ACM不是人人都適合,恰恰相反,它只適合少數人。有人說它是智者的游戲,我認為是智者和勤奮人的游戲。
?
看了以上的利弊分析,如果你有種想立刻投身其中的沖動,那么先不要著急。思考一下以下問題,看你是不是真的適合ACM:
1.你是否喜歡數學?注意,ACM高級別比賽的較量是數學和思維的比拼,編程只是一個基本能力。
2.你是否喜歡思考,喜歡解決難題,喜歡被難題折磨地痛不欲生的感覺?如果你喜歡,ACM就是你的天堂,否則就是地獄。
3.你是否喜歡編程,你是否喜歡“破壞”鍵盤?ACM講究高效率的編程,賽場上隨處可見各種瘋狂的“打字機”。
4.如果以上你都喜歡,最后問自己一個問題,你能堅持嗎?每年ACM組招新都能招到超過50人,但最后剩下的只有10人左右,大部分人都是以為ACM很好玩,還能得獎就報名了,結果發現不是這么回事。ACM是一個門檻很高的比賽,不是想隨便玩就能玩的。
?
最后,根據我個人的經歷,談談ACM如何訓練及比賽。
1.剛開始接觸ACM基本就是做水題,即無算法或者簡單算法的題目,主要是熟悉ACM,打好編程基礎。推薦的在線網站為POJ(http://poj.org/),由于它是國內最老的OJ,蘊含著前輩的心血和智慧,如果遇到問題,比較容易找到人解決。POJ上水題很多,找200水題熟悉下即可。
2.不少人會熱衷于水題,并且癡迷于POJ上的題數及排名,如果你只想通過ACM來提高編程能力,那么沒問題,刷水題到500以上也并非難事。如果你想進一步提高自己的ACM水平,水題刷到300以上就一定要打住,開始系統地學習算法。
3.算法的列表及相應的題目分類,網上隨處能搜到。同時,我極力推薦在學算法刷題的同時,寫寫相應的解題報告。解出題目是一個層次,能夠寫出解題報告并讓別人看懂說明你對相應的算法有了更深的理解。無論是給自己看,還是貼在網上給別人看,都是值得推崇的。同時,寫解題報告也可以推動ACMer之間的相互交流,共同進步。我在ACM訓練期間經常在個人空間里寫一些解題報告,其中有關幾篇關于數據結構和數學的文章值得初學者借鑒(http://hi.baidu.com/czyuan_acm/home).
4.當你對大部分的算法有所了解后,就可以參加比賽了。參加比賽前的一個重要準備就是整理模板庫,即對一些常用算法的代碼進行整理。ACM比賽是允許帶任何紙質材料,包括書。所以,整理一些基礎的代碼還是十分有用的。但是,不能過分依賴模板,越是高級的比賽,模板的重要性就越低。
5.ACM比賽是個變化莫測的比賽,很多初學者都會糾結于一道題目無法自拔,直至比賽結束后悔莫及。如何調節心理,如何在比賽中指定相應的策略,如何避免非技術因素導致的失敗,這些只有通過不斷比賽來積累。而這些都是許多ACMer無法逾越的一道屏障,成為他們心中永遠的傷痕(暗指本人>.<) 。
?
最后的最后,引用幾乎每個退役的ACMer都會說的話:ACM is just a game. 如果你喜歡,就享受它,如果不喜歡,就遠離它。
?
????先個人簡述下:07級本科,軟件學院,09-10年創新中心ACM組組長。ACM/ICPC亞洲區3銀1銅,東北地區2次一等獎,遼寧省2次一等獎。3年國家獎學金,2010年9月至2011年5月在微軟亞洲研究院(MSRA)實習。
以下是本人在大學期間參加ACM/ICPC的總結,以及相關的經驗教訓。
首先,先說說ACM對大學以及未來發展所帶來的利弊。
利:
1.毫無疑問,你的編程能力(注意這里不是軟件開發能力)會得到大幅度地提升。ACM比賽注重短時間地寫出正確的代碼,是完全正確的代碼。在ACM比賽中,只有對的代碼和錯的代碼(在現實生活中可不一定是這樣的),沒有一本正確的代碼。
2.你的算法能力會得到很好的鍛煉。在以前的教科書里,算法是計算機學科的核心。雖然現在的觀念淡化了算法的重要性,更多地注重軟件的架構和利益等方面,但是基本的算法學習還是必不可少的。扎實的算法和數學功底是計算機研究的必備條件,而這些正是ACM競賽所培養的。
3.ACM競賽講究三人組隊配合,這點很符合現實中的團隊合作,如何作為隊長合理管理團隊,如何作為隊員提高配合效率都是ACM比賽教會你的。
4.由于ACM競賽現場賽在各地舉辦,比賽的同時也可以領略當年的風土人情。本人自從參加ACM競賽,從南到北走過了不少城市,東三省的主要幾個城市都去過不止一遍。在比賽的同時,也結交了許多全國各地的編程愛好者,增長了見識。
5.ACM競賽由于其權威性,并能選拔出高質量的計算機人才,得到世界各大IT公司的支持。Google, Microsoft都曾贊助過ACM競賽,國內百度,有道也開始大力支持。同時各大公司也推出類似ACM競賽的選拔比賽,并給出高額的獎金吸引人才。Google Code Jam, Topcoder, Baidu Astar基本成為計算機頂尖人才進入這些公司的捷徑。我這次能進入MSRA實習,也是他們看中我的算法能力和編程能力,同時也是這些能力讓我很好地完成了實習工作。
弊:
1.正如上文所說,ACM競賽追求完全正確的算法和代碼,這與現實生活中的軟件開發和計算機研究有所不同。軟件開發很難做到完全沒有bug,而計算機研究更是在追求不斷智能的路上永無止境。同時,ACM競賽只要求代碼的正確性,沒有涉及代碼的風格以及相應的文檔配套,這會對以后的軟件開發留下不好的習慣。(當然,以上都是觀念及習慣的改變,如果想改,完全是可以改好的。)
2.ACM競賽需要長時間的積累,要想出好成績基本需要花費大學的大量時間,許多ACMer都是成天成天地刷題,熬夜參加練習賽。由于長時間的接觸電腦,導致身體健康情況,人際交往能力等都會受到一定的影響。
3.ACM的訓練及比賽都是個腦力與體力同時承受煎熬的過程。經常一道題目就會花費你1天乃至數天的精力,一場5個小時的比賽就像一場馬拉松,誰能堅持到最后,誰就是贏家。這里面的艱辛,只有正在投身其中才能體會。
4.ACM不是人人都適合,恰恰相反,它只適合少數人。有人說它是智者的游戲,我認為是智者和勤奮人的游戲。
?
看了以上的利弊分析,如果你有種想立刻投身其中的沖動,那么先不要著急。思考一下以下問題,看你是不是真的適合ACM:
1.你是否喜歡數學?注意,ACM高級別比賽的較量是數學和思維的比拼,編程只是一個基本能力。
2.你是否喜歡思考,喜歡解決難題,喜歡被難題折磨地痛不欲生的感覺?如果你喜歡,ACM就是你的天堂,否則就是地獄。
3.你是否喜歡編程,你是否喜歡“破壞”鍵盤?ACM講究高效率的編程,賽場上隨處可見各種瘋狂的“打字機”。
4.如果以上你都喜歡,最后問自己一個問題,你能堅持嗎?每年ACM組招新都能招到超過50人,但最后剩下的只有10人左右,大部分人都是以為ACM很好玩,還能得獎就報名了,結果發現不是這么回事。ACM是一個門檻很高的比賽,不是想隨便玩就能玩的。
?
最后,根據我個人的經歷,談談ACM如何訓練及比賽。
1.剛開始接觸ACM基本就是做水題,即無算法或者簡單算法的題目,主要是熟悉ACM,打好編程基礎。推薦的在線網站為POJ(http://poj.org/),由于它是國內最老的OJ,蘊含著前輩的心血和智慧,如果遇到問題,比較容易找到人解決。POJ上水題很多,找200水題熟悉下即可。
2.不少人會熱衷于水題,并且癡迷于POJ上的題數及排名,如果你只想通過ACM來提高編程能力,那么沒問題,刷水題到500以上也并非難事。如果你想進一步提高自己的ACM水平,水題刷到300以上就一定要打住,開始系統地學習算法。
3.算法的列表及相應的題目分類,網上隨處能搜到。同時,我極力推薦在學算法刷題的同時,寫寫相應的解題報告。解出題目是一個層次,能夠寫出解題報告并讓別人看懂說明你對相應的算法有了更深的理解。無論是給自己看,還是貼在網上給別人看,都是值得推崇的。同時,寫解題報告也可以推動ACMer之間的相互交流,共同進步。我在ACM訓練期間經常在個人空間里寫一些解題報告,其中有關幾篇關于數據結構和數學的文章值得初學者借鑒(http://hi.baidu.com/czyuan_acm/home).
4.當你對大部分的算法有所了解后,就可以參加比賽了。參加比賽前的一個重要準備就是整理模板庫,即對一些常用算法的代碼進行整理。ACM比賽是允許帶任何紙質材料,包括書。所以,整理一些基礎的代碼還是十分有用的。但是,不能過分依賴模板,越是高級的比賽,模板的重要性就越低。
5.ACM比賽是個變化莫測的比賽,很多初學者都會糾結于一道題目無法自拔,直至比賽結束后悔莫及。如何調節心理,如何在比賽中指定相應的策略,如何避免非技術因素導致的失敗,這些只有通過不斷比賽來積累。而這些都是許多ACMer無法逾越的一道屏障,成為他們心中永遠的傷痕(暗指本人>.<) 。
?
最后的最后,引用幾乎每個退役的ACMer都會說的話:ACM is just a game. 如果你喜歡,就享受它,如果不喜歡,就遠離它。
總結
以上是生活随笔為你收集整理的来自一个大牛对ACM的总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ZUI的入门使用
- 下一篇: 最合理的关键词密度是多少?