1. 程式人生 > >當你真正感覺到痛,你才知道痛是什麼——ACM退役貼

當你真正感覺到痛,你才知道痛是什麼——ACM退役貼

    總算還是走到了末路,也終於由一個退役貼的看客變成了寫者。從很久前就開始讀退役貼了,總會在一些枯燥乏味的時候給人重新奮鬥下去的力氣。其實更多的時候讀退役貼,都只是想看看有沒有一個人,和我一樣從什麼都不會的地方開始,幾經周折最後達到了自己的目標,曾經有人這樣做了,那我也就有勇氣走下去,不過可惜,最後我還是沒走到終點。
    離去的路上,難免緬懷各種曾經,有不顧一切昏天昏地的刷過題,但也有醉生夢死的玩過,對ACM是否認真已經難以評說,更何況,已經沒有了意義,因為一切不會再重來。但仍然應該想一想,多想一下,從第一次聽說ACM到現在,我究竟算是輸還是贏。

    想了很久了,儘管無論從哪看,都不能算自己輸,演算法學到了,程式碼能力提高了,執著有了,奮鬥有了,各種程式設計能力也有了,作為第一個掌控25人的ACM隊長也是或許整個中國都不太常見,儘管或許並不合格。啥都得到了,在我上大學之前所想要的,實驗室也好,證書也好,公司看重的,綠色通道的,很多很多,都在不經意間拿到了。滿載而歸?為何仍有淡淡的憂傷。

    在入大學時候,不知道第幾次與王老師談話,探討出了目標一定要定的足夠高遠,才能讓自己發揮出最大的實力。一開始就有final的心,哪怕連C++都不會。後來拼進ACM隊後,面對錯綜複雜的演算法與神祕莫測的各路大神,忽然就有一種目標與現實被橫插進來的雲霧直接給隔斷了一般,或許能看到目標,卻找不到通往目標的路,面對教主切水果、三國殺的學習似方法,加之流傳於隊裡的“智商是硬傷”說法,頓覺,ACM這潭水太深,然而退出卻以不可能了,雖然也曾想過,也找老師要過專案啥的不過最後被拒了。猶豫很長一段時間後,在入隊第一年末,也就是大一下的時候,看金林他們在總決賽上耀武揚威,頓時有了“大丈夫當如是也”的感覺,沒有教主的風姿,那麼就只能“你若是天才,我便做瘋子”了。當時題數約莫400+,然後就開始了瘋狂刷題路,把每天的題數都記下來,髮狀態監督法,一天接著一天,堅持下去,當時頓有刷題狂魔之風,連隊友都深感壓力,不過,也是我所想要的,後來狀態由於大概是考試中斷了,但是題數卻一直在上漲,在之後金華邀請賽上發揮出了自己當時的水平,不像上兩場抱大腿流了。到第二年區域賽的時候,約莫花了5個月時間,題數終於上千了。也就在金華區域賽之前,才終於看清了曾經自己的弱小!校隊選拔賽啥的,都只是自己碰運氣才擠在前面的,而那時的自己竟然還洋洋得意,認為自己頗具天賦。
    然而到了那時,時間卻已不多了,也或許,時間本來就不多,只是帶上“新隊員”的帽子認為未來還很長罷了。當踏入ACM集訓隊的時候,就應該有時間不多了的覺悟,或許也就一瞬間,你便成了要退役的“老人”,而你所期望的目標,到最後如果只與你有一步之差,你卻不得不放手,又當如何?已經Time Limit Exceeded
了。醒悟於二分之一的旅途中,前半截當自己是新生,可以無所畏懼,恣意浪費這時間,也或許,並非如自己所說,而僅僅把半個學期花掉了。
    最後一年的時候,在沒有進過總決賽的隊伍帶領了,一切都靠自己打拼,也並沒有怎樣的荒廢。但,總會莫名的失利,如以前說的,再怎樣的努力,也不過是增加自己的勝算,到了最後,還是看天意,也或許,是披著天意運氣面紗的心態。長春邀請賽的心態,說不好了,其實也不算差了,之所以輸也有些莫名其妙。長沙區域賽的敗著實出乎意料,怎麼說也是做了好幾套浙大出的題目,十幾套月賽云云,最終不進反退。都是心態吧?
    最後一戰,長春,實際上發揮也差不多了,也總算找到些門道,所謂心態,或許就是儘自己最大努力吧,再不依賴隊友,再不想著隊友如何,如向天宇所說“不要總想著依賴別人,要努力成為別人的依賴。”最後一戰,或許做到了。雖然仍未拿到想要的,但是也只能說再見了。
    三年之後,回顧這ACM,也還是說不清到底該怎樣練才能算好,才能算盡了全力,才能拿到自己想要的。如不久前所說,ACM世界裡,要不就是玩命的瘋子,要不就是悠閒的教主,想混下去,不下點讓別人都懼怕的血本怎麼可能獲得想要的。在這個紛爭的領域,一大堆通宵刷題不亦樂乎的,一大堆吃住都宅在實驗室的,翹課的、不復習的,日復一日千百天如一日A的人大有人在,沒有假期,沒有鬆懈,沒有疲累,有的只有目標,執著地拼死也要弄過去,見過一年2000題的,見過除夕發解題報告的,見過為了ACM直接延期畢業的,別人都在玩命的幹,UESTC一個暑假60+場比賽,LATTE也近乎一天一場,別的ACMer都這麼拼,若不是遊戲於ACM的大神教主,你不對自己狠到別人都看不下去有什麼資格說final?更何況即使費盡渾身解數,仍然沒拿到想要的名次的人也大有所在......
    我不是輸給了懶惰懈怠,贏我的人,大多比我更加勤奮。OI選手比了五、六年了,想花兩三年就追上,那付出的代價也必須與之持平。
    賽後,找王老師談話後,他說了自己對ACM的認識,也就是之所以認為ACM好的原因,不是演算法或是什麼程式設計能力,而是那種執著。不顧一切,無所畏懼,心如白紙,專注如一,或許當時沉浸於ACM中的自己真的如此,A了這題,管它明天考高數還是線代,管它還有什麼實驗報告需要提交,我只要一個AC,也就心滿意足。不過,也就是這心態而已。不過,那時的確挺好的。
    所思所感,大抵如此,從“你若是天才,我便是瘋子”到“不自損八百,何以傷敵一千”,這或許都是一種心態吧。實際上,在第一年向天宇學長退役時就說了,不謀而合,送給所有的ACMer,"不要總想著依賴別人,要努力成為別人的依賴!"。別遇到噁心的題就丟給隊友,別遇到複雜的演算法就讓隊友去學,有時,把命運掌握在自己手中更加能發揮自己的價值。
    然後,提一下自己對演算法亦或是競賽方面的理解吧。
    第一年學了些基礎,諸如貪心、搜尋、生成樹、最短路、DP之類,其實可以看成打醬油,沒啥高階演算法,所以最後也就比成那樣了,一鐵一銅,還是主要靠的隊友;
    第二年,或者說ACM的第一年結束的時候開始爆發,化身刷題狂魔,POJ的Recent Rank 常擠在前面,天天與五虎上將鬥得不亦樂乎,誰勝誰負也還不一定。除此之外,也終於找到了刷題以外另外的一種提升方式,也就是看論文,OI論文啥的,看了很多,也發現了ACM進步之快,也明白了曾經的隊員說當時一道線段樹就可以看做神題,而如今只是中檔罷了。期間弄了下計算幾何、Splay、次小生成樹、密度子圖、最大權閉合圖等東西,實際上,都是從論文中學會的。在這種情況下題數仍能突破1000+也的確說明了什麼,或許,就是你以為自己盡了最大的努力弄ACM,實際上卻還遠遠沒有,還有很多發揮的空間沒有去挖掘。
    第三年,終於不再刷題了,因為POJ上已經除了神題就是年代久遠的題目了,很偏。然後開始弄隊伍缺乏的一些東西,數學,以及計算幾何,也認識了Codeforces這東西,然後USACO的搜尋很好。其實,個人感覺第三年更像鞏固,很多以前不大懂但是A了的演算法就輕輕鬆鬆會了,然而提升的話就少了很多,也沒有學太多新演算法,大約包含了大概插頭DP、莫比烏斯反演、FFT、平面圖、三維幾何啥的,掃描線演算法到如今我也不知道我究竟是會還是不會,或者,這東西更多是資料結構了。當暑假個人賽失利的時候也想過一些諸如學習方法是否正確之內,後來覺得,是連番的比賽耐力用光了,所以連續三年的個人賽,也就第二年比的勉強過得去,不過正式賽的話,自問不輸給隊內任何人。
    比賽時好時壞,最後感覺還是心態影響著最後的結果,其實,長春退役賽前著實休閒了一會兒,比賽狀態果然比長沙好多了,或許,這只是對我而言,但是長沙那場的確很讓人不爽。毛主席說,“
都知道如果讓心態禁錮了思想,就已經自己輸給了自己,可是我們這些俗人,又有誰做到  ... ”,大家都可以說心態,但是下一次錯誤照犯,都說注意超int,下次照錯,都說注意陣列空間大小,結果還是一樣錯。沒有辦法掌控麼?誰知道呢。
    入實驗室後,老師所說或許恰巧應徵我所想,真正好的心態,不是什麼平常心,因為做不到,除非你根本不看重,或者已經有了絕對的自信。我認為的是,獨當一面的心態,或者也就是所謂隊伍絕對的主力了,把自己看做勝負的關鍵,勇往直前,如此吧。其實,向天宇和單總都曾有這樣的說法吧,單總所說,是“就敢霸者鍵盤不放”,向天宇的則是“不要總想著依賴別人”。也許無論在哪都是如此,或許自大狂妄,但如打不死的小強,總有一次失敗後的成功就突然讓人覺得你無可企及。
     最後,推薦幾個演算法,給陷入瓶頸的ACMer,有興趣玩玩。是那種聽起來讓人望而生畏,學起來卻不算難甚至很簡單,學會後還能解決一大堆題目的,總結之後就是一大水的演算法,已經會的請直接無視。
    樹鏈剖分:貫以動態樹的 名號,實際就是兩DFS,幾個小時足矣虐掉。
    莫比烏斯反演:實際上有些難懂,但是翻來覆去就一個東西,不用去學,會用就行,2個work函式,2個solve函式就把幾乎全部內容搞定了,是那種一套模板走天下的(神題大家都不會也無所謂了)
    FFT:我會告訴你我不會FFT,但是我會AC這種型別的題目麼,這東西模板性太強了。
    計算幾何庫:。。實際不是演算法,列在這裡的意思是,只要你整理出自己的模板庫,把什麼交點、平行、垂直、解方程、旋轉啥的玩意全函式化後,這貨真心很簡單=。=不過,還是細心的ACMer弄吧。
    莫對演算法:很好玩的一個演算法,解決好一些麻煩的區間詢問的題,而且不難。
    隊友說link-cut-tree比Splay-tree更簡單,只有兩種操作啥的,未驗證,但細想一下,貌似真是。

    最後一年也在網上認識了很多志同道合的ACMer,這一條道路上,並不是你獨自一人在走,拼命的人真的很多,願來年你們拿到自己想要的成績。
    TJU被終結的Final之路,願你們把它拿回來,認準了的目標,就不要在再也達不到的時候才去後悔或是遺憾,ACM不是想當然多A一年就能如何逆天,真的要你用心付出才行,要你做你不敢做害怕做的事情!
    當你真正感覺到痛,你才知道痛是什麼......

    ACM之於我,真正獲得的或許也就兩樣,表面上的基礎、演算法之流,深層處的不屈與倔強。當最後比賽輸了的時候,沒怎麼去惋惜學了那麼多演算法怎麼如此啥的,真正感到遺憾的是那一份執著沒有完美的結局,果真是不完美的結局才最讓人回味麼~?
    那份偏執猶在,不屈尚存,在新的天地又怎麼會甘心?我會一如既往。
    I‘m here, as always.