论ACM ICPC_Ruins He
這段時間老是有許多新人向我問到ACM相關的問題。比如它與工作的關系,對我以后的工作到底有沒有幫助?還比如說第二年的訓練計劃應該是什么樣的?還有的孩子問到,我寒假玩兒的一個寒假,又該怎么辦?
看到這些問題,我自己也感慨萬千,一眨眼自己在這方面也涉獵了兩年多了,經過那一段時間的糾結,最終還是決定第三年繼續。大家選擇ACM的理由的很多很多,為了以后方便找工作?充實生活?鞏固學科基礎?不管是為了功利心理也好,還是純粹的興趣也罷,最后共同的結果就是我們選擇了ACM作為自己大學生活的一部分。
我們可以從ACM中學到什么?
首先,作為一個團隊活動,我們可以從中感受到團隊合作的魅力,只可以感受團隊合作給我們帶來有那種不一樣的感覺,當然,也可以從中認識更多的志同道合的朋友。
其次,ACM是一個學習的過程,對我來說,在這兩年里,我自己學到了許多上課不會涉及的東西,自己吸收其它方面知識變得更快了,對于即將從事IT產業的我們來說,學習能力是一個非常重要的能力。
最后,要取得好的成績,我們要掌握許許多多的知識,而大部分的知識,都是計算機學科、數學學科的基礎,比如說微積分、線性代數、概率論、數據結構等等。
ACM需要的是堅持而不是三分鐘熱度
大一開班會的時候提及到過大學四年的規劃,記得當時選這個的人挺多的,堅持半年的也很多,但是到了大一下學期,一個寒假回來,堅持下來的就沒有幾個了,而到了最后參加講座的就更少了。這說明的什么?可能是沒有興趣吧,ACM是一個需要堅持的競賽活動,不是簡簡單單的混個三、四個月就可以有成績的,只因為付出了,才會有后來的回報。
很久以前就聽學長們說了一句話:ACM ICPC不應該成為大學生活的全部,但是我們卻時常后悔沒有把我們的全部投入進去。很多人常常在失敗的時候抱怨自己的隊友,把失敗歸咎于自己的團隊,當然也有人把所有的責任推到自己的身上。我們要記住,ACM是三個人的活動,不是你一個人的,更不是你隊友的。三個人堅持下來了,我們要的不一定是得到輝煌的成就,最主要的還是那深厚的友誼加上和朋友們一起奮斗的過程。
關于ACM的種種小事
交流是重中之重
成為集訓隊的成員已經有兩年的時光了,在每年新的一輪訓練開始時,最經常見到的就是一個新人的隊伍,甚至是有一定配合的老隊伍的三個人,各自做各自的,從始至終都沒有什么交流,說的最多的就是這題過了,這題掛了,或者是你先下來,我先寫另外一道,等等。切記一點,ACM是三個人的活動,并不是1+1+1那么簡單的,如果三個人各自為戰,這和個人活動有什么區別?1+1+1<1是常常遇到的事兒,出現這類問題最主要的原因就是各自為戰。
做事要有一個整體規劃
到現在,我見到的最多的解題策略,包括我自己曾經用的,都是reading-thinking-coding-thinking-coding-debug-thinking-debug-submit。對于一個中檔題來說,這個過程可能需要30到50分鐘不等,往往很多人覺得50分鐘和30分鐘是沒區別的。在過題之后估計整個過程,許多人會把實際上是50分鐘的時間估計成半小時,然后就覺得時間充裕。不管是做ACM也好,平時做事也罷,有一個非常重要的環節,那就是Programming,這可不是Programmer相關的單詞,而是Dynamic Programming中的Programming,它是規劃的意思,相同的一個ACM問題,如果你在上機前多花5分鐘規劃,你可以在coding和debug階段省下很多的時間。記住,理想的解題過程應該是reading-thinking-programming-coding-debug-submit,甚至對代碼能力好的人來說,debug這個環節可以省略。
克服對新知識的抵觸心理
第一年訓練結束之后,隊伍解散,我也開始新知識的儲備,那時候對DP有著很大的抵觸心理,后來在寒假逼著自己看了幾篇DP優化相關的論文,結果雖說不上喜歡上了DP,至少對DP的抵觸心理小了很多。世上不存在什么不可能學會的知識,我們要做的僅僅是培養興趣而已。
代碼越短越好 or 寫的代碼越長說明自己越牛?
我想一定的不少人覺得代碼越短越好,或者代碼越長說明自己越強。很明顯這種想法并沒有任何的科學性。coding是一門藝術,拿coding和寫文章作對比,可謂大同小異,作為一個團隊的成員,我們要做的是使自己的文章可讀性更強,而不是刻意地去壓縮、擴充自己的代碼。解題的過程,個人能力差異最小的就是coding在過程,差異最大的是thking和debug的時間。代碼比別人的長了點兒,coding多花了時間,但是debug的時候隊友可以給自己更多的幫助不是么?
為什么我投入了這么多卻沒有得到回報?
很多人,包括我自己,都遇到過這類問題。當遇到這類問題的時候,有的人會選擇退卻,有的人會選擇反思,當然也有人選擇不管不問,使用以往的方式繼續下去。遇到這類問題,我們要做的事就是找到問題的根源,我想最大的一個原因,就是不夠專注。何謂專注?專注不是一整天只吃一頓飯,即使逃課也要訓練,專注也不是花大量的時間,只學了本來一個小時就可以學會的知識。高中的時候,很多同學問我為什么做作業比他們快,其實高中的時候效率高的原因僅僅是不在做作業的時候聽音樂而已(我發現自己沒法做到那樣的狀態了,訓練的時候沒法做到原來那么專注,有點可惜)。在訓練的時候,我習慣把電腦靜音,拔去散熱器的電源,我不希望散熱底座風扇轉動的聲音影響自己的思考,雖然我的思維很慢。有的人(有時候我也有這樣的毛病)喜歡在訓練還沒結束的時候就在群里得瑟,或者在訓練一半的時候發現剩下的題目自己肯定沒戲,就放棄了。我覺得這都不是一個好的習慣,養成好的習慣可以讓你有更大的成就的。
談談ACM的學習氛圍
我常見到很多人在群里抱怨題目看不懂,當然也不排除這些題目描述真的寫得很渣的原因。如果一套題,特別是好題,你發現自己很多題都看不懂意思的話,那只能說你有點浮躁了。
雖然不愿意這么說,但這卻是事實,做ACM最需要的是一個氛圍,一個平常十分融洽,訓練的時候卻嚴肅的氛圍。其實我不喜歡訓練的時候開玩笑,以前不少老隊員和我說:何老師,你的表情太呆板啦,和我們一樣嘻嘻哈哈的多好。我可能習慣了,平時都不會嘻嘻哈哈的,但是我并不反對平時沒有訓練的時候大家活躍一點,畢竟大家是在一個集體之中,需要更多的溝通交流。我也不反對平時一起玩游戲、一起聽音樂、殺人、三國殺,娛樂活動是生活不可缺少的一部分,這我還是知道的。但是在訓練的時候得瑟、逛社交網絡、在QQ空間里瞎逛就不可取了。
凡事都不會是絕對公平的,不管在什么情況下,不公平的事可謂是屢見不鮮了。copy他人的代碼(或者自己以前寫的代碼),太過于樂于助人等等。我想很多人在前期會有想不出來馬上就看題解的習慣,慢慢演變成了這樣,當他意識到事情的嚴重性的時候,卻很難改正了。甚至有人并沒有意識到這里面對自己的危害有多深,而到了最后的賽場才后悔莫及。
SCL到底是好是壞?
SCL,大部分人稱其為模板、模塊、標程等,對很多人來說,可能是比賽場上必不可少的武器吧?不過我的觀點是能不用就不用,大多數人使用SCL的原因是其中的代碼并不是他自己實現的,有可能是google的,或者其他隊員、學長實現的。我并不反對這種行為,但是比賽比的就是代碼實現能力,至少,你要對這份代碼相當熟悉才行。
之所以不推薦用SCL,主要的原因是它會阻礙代碼能力的提升,習慣用SCL之后,你會發現自己寫代碼越來越容易寫掛,1Y率大幅度下降,隨著自己學的東西越來越多,積累的SCL越多,代碼能力就下降的越快。SCL僅僅是為了正式比賽心安的一個工具,而不是訓練的工具。
ACM與大學生活
作為ACMer,我認為ACM給我帶來最多的好處,那就是充實了我的大學生活,讓我喜歡上了看課外書。看書不能囫圇吞棗,否則你可能連原理都掌握不了。此外,最重要的是實踐,一個新的算法,要自己試著實現。當然,實現之前一定要理清步驟,另一方面,我們還需要通過和他人的交流,讓自己對某方面的知識的理解更進一步。
還有一個和我們大學生活相關的話題,那就是GPA。很多人因為ACM把學業扔了而掛了很多科,這可以說他們把時間全花在ACM上了么?當然不能。曾經問過學長類似的問題,得到的答案就是GPA相比ACM來說,公司雖然看中能力,但是更看中基礎課的掌握程度,而GPA就是表現這個的最方便的方式。GPA說明了一個人對待學習的態度,也表現了一個人的學習能力??偠灾?#xff0c;我的建議地能不掛科就不掛科,畢竟掛科后要花更多時間去折騰自己的學業。
最后,想提及一下作息時間的問題,大一大二作息時間一天比一天混亂,特別是周末或者課少的時候,本人熟悉的ACMer中,有90%的是夜貓子,每天2、3點睡覺都是常事,而這樣的作息時間導致了白天精神萎靡的情況。最近一直11點睡7點起,上課沒有犯困過,感覺良好。
不管怎么說,既然要把ACM作為自己大學生活的全部,那么就認真地投入吧,好好享受這個過程才是最關鍵的不是么?
總結
以上是生活随笔為你收集整理的论ACM ICPC_Ruins He的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用mongoose Model.crea
- 下一篇: 女性不孕要做那些检查