華東理工某ACMer總結

作算法和做技術哪一個難? 都很難, 沒有可比性. 可是算法作得好的能夠轉行作技術, 技術作得好的想轉行作算法卻很困難. 我是08年下半年將近期末的時候加入華理ACM隊的. 我高中的時候沒有編程經驗, 數學也很差, 高考數學剛及格. 由於第二工業大學的網絡工程專業的分數是最低的, 因此就比較巧合地步入了計算機行業. 大一有一門C++課程, 當時我在第一次上機的時候就深深的被C++迷住了. C++是一門極其優美的語言, 相比於高中計算機課上一筆帶過的VB, 我最喜歡C++的花括號. 由於學校比較差, 周圍的學生沒幾個專心讀書的, 因此對於一個稍微想要學點東西的學生來講, 這樣的學校裏的硬件資源就顯得異常豐富了, 圖書館裏不少計算機經典書都是新的, 並且自修室人也不多, 整個大一除了談談戀愛解解悶以及陪室友打打魔獸之外, 我大多數時間都在圖書館或者自修室, 雖然在那裏的時候不老是作些學習方面的事情...我也會常常無聊的在網上亂逛或者處處下載資料作收藏家. 但正是這個時候我接觸到了C++的聖經[The C++ Programming Language], 當時我看了一段時間的電子版, 由於不方便做筆記, 很不爽, 因而在08年1月的時候買了中譯本. 以後的大一下學期我又陸陸續續看了部分[Effective C++], [More Effective C++], 還有一些數據結構方面的東西. 而後學期中期的時候我集中精力作了一段時間的數學建模競賽. 大一結束的時候我經過插班生考試從第二工業大學轉來華理, 很不巧, 插班生考試數學又是剛及格. 在暑假期間我去上了CCNA和CCNP的部分課程, 由於感受這種純操做工同樣的"背誦"活很不適合我, 因而半途而廢了, 暑假在家的時候作了不少windows下的網絡編程, 本身寫發包程序, 寫SYN攻擊頗有意思. 大二剛來到華理的時候自我感受很牛B, 由於我自學過的東西幾乎都沒有人能來跟我作作討論. 因而我自覺得很了不得, 也沒怎麼在乎學校的課程, 除了上課, 平時我幾乎都在圖書館或者自修室. 這期間我接觸了設計模式, 以及.NET開發. 大約在開學不久, 08年的Regional尚未開始的時候, 我據說了ACM這種東西. 當時對這個東西我是徹底沒概念的, 在某個晚上我去奉賢311找了羅老師, 當時詠天也在, 是ACM隊準備召新的時候, 羅老師跟每一個同窗談了話, 我是最後一個, 跟他嘩啦啦地說了不少之前我看過的書, 作過的東西. 被羅老師讚揚了一番以後我更加自覺得是了, 並以非正式的身份進了ACM隊. 可是直到學期結束, 我也沒作什麼題. 學期將盡的時候我跟室友展開了一箇舊書交 易網站的建設, 而後我就一股腦地徹底投入進去了, 用了將近五個月的時間, 其中佔用了我整個寒假, 我用ASP.NET+Spring.NET框架寫了一個自覺得有很高技術含量的簡單的舊書信息發佈平臺, 全站單頁面, 無刷新, 全部操做都用AJAX技術完成, 而且我本身設計了一個貌似很牛B的內存數據庫. 結果在09年的上海市計算機應用能力大賽中, 個人做品只獲了一個優勝獎. 貌似還有不少同窗沉迷於這些, 覺得這就是編程. 備受打擊的我在迷茫了一陣子以後想起來ACM, 因而在大概3月底的時候開始在PKU切題. 以上都是以前的一些學習經歷, 關於ACM的部分從這裏開始. ACM是個頗有意思的東西. 起初, 我有點看不起這個東西, 相信不少過早接觸技術開發方面的同窗都有這樣相似的想法, 因而就有了諸如"作算法和作技術哪一個難"的問題. 今天再讓我來回答這個問題的話, 我只能說, 都很難, 而且沒有可比性. 可是我要補充一點, 大學生能夠作技術, 不上大學一樣能夠作技術. 再要我說得明白一點的話就是, 一年前我用了將近一個星期的時間, 看着MSDN和CSDN寫了一個windows下的掃雷程序, 而且在以前我用了若干個星期積累了SDK編程的一些知識, 而今天雖然我已經忘記了幾乎全部SDK編程的細節, 不知道怎麼去畫一個自定義的按鈕, 可是給我一臺能上網的電腦和一天的時間, 我能把當時的那個掃雷程序寫出來, 而且讓它的代碼量精簡掉一半以上. 另一個事實就是, 絕大多數的ACMer以及幾乎全部成功的ACMer的數學都很是好, 不論他們是原來就很好仍是後來變得很好. 如下說一些實質性的東西. 編碼能力 在ACM的世界裏, 編碼能力和數學功底是絕對的王道, 硬要分個前後的話, 編碼能力就是王道中的王道. ben在學校的時候幾乎不看算法類書籍, 最多也就是看看網上零散的知識點, 可是他的成績是你們有目共睹的, 其中最重要的一點就是他的編碼能力至少在華理, 那是使人髮指的強. 寫一個容斥原理你要多久? 或者給你入射光和球的相關參數, 要你編碼求出反射光的運動參數, 你又要寫多久? 更有甚者, 在今年暑期的我的賽第一場最後一題, 給你一個掃雷過程當中的狀態, 要你計算出全部可以肯定的雷, 這題ben用了不到半個小時就AC了. 今年的上海賽區一樣對編碼能力要求很高, 其中咱們沒有過的I題, 當時ben打印出來的代碼有4張紙, 也正是由於這麼長的代碼, 我跟sky連去糾錯的信心都沒有, 結果ben本身也沒有可以在賽場上把錯誤找出來. 編碼能力的培養的捷徑就是作題, 尤爲是搜索, 模擬, 計算幾何等類型的題目尤爲鍛鍊編碼能力. 我可以很快適應ACM, 很大程度上也是得益於大一期間積累的編碼能力和C++語言基礎. 在鍛鍊編碼能力時, 特別要注意作題要限制時間, 這點跟本身作一些小項目, 小程序徹底不一樣, 不能拖拖拉拉一作就是幾天. 最好的方法是在寫代碼的同時把本身作這題的開始和結束時間都標註上去, 這點在後面關於解題報告的部分我還會說到. 若是以爲有時本身會記不住記錄開始時間, 那就養成一個習慣, 每看到一題就先隨便submit幾個字母, 讓它CE一次, 這樣之後再回過頭來看歷史記錄就能夠知道本身作這題用了多少時間了. 限制作題時間又一個很明顯的做用就是能夠自我認識, 即瞭解本身對於某一方面的知識掌握程度, 若是平時遇到某一類型的通常題目(沒有特別噁心的trick, 沒有特別噁心的輸入), 本身須要花超過2個小時去AC, 那麼就幾乎能夠確定你在賽場上是不太可能把這題作出來的, 換句話說, 若是你在賽場上遇到這種類型的題目就能夠暫時先放一放了. 編碼能力的一個很關鍵的地方就是編碼風格問題, 一些廣泛適應的原則諸如"不要把複雜的語句寫在[]裏", "不要在if裏寫複雜的語句", "把if裏複雜的邏輯拆分開", "全局變量要特殊命名"等等, 這裏不可能一一列舉, 惟一的辦法就是每次本身在這裏吃到苦頭的時候把它記錄下來. 具體的能夠參考ben的方法, 例如把PKU的每次提交狀況都粘貼進一個文本文件裏, 而後在每次提交記錄後面都加上一些註釋, 好比"++i寫成i++", 或者"dis數組忘記初始化"之類的東西, 這樣即便不能保證此類錯誤之後不會再犯, 也至少能夠下降你犯此類錯誤的機率. 關於下降犯錯的機率還有一個生理學上的解釋, 即記憶的編碼並非純粹的把東西原封不動地放進腦子裏, 而是會被咱們的神經系統先分解, 儲存在大腦各處, 而且其中夾雜了大量記憶的場景, 即記憶發生時的環境. 當咱們再次處於相似的環境時就有更大的機率把相關的事情回憶起來, 所謂的聯想記憶也是這麼一回事. 因此當咱們犯錯誤時就應該儘量地增長能夠勾起咱們回憶的材料, 好比寫下一些箴言形式的語句加深記憶. 解題報告 上面說到錯誤記錄能夠下降咱們犯錯的機率, 一樣的, 解題報告也是基於這一原理, 而且它每每比錯誤記錄更加有效. 咱們經常能夠看見一些大牛blog上的學術類文章寫得很是風趣, 有時裏面會參雜一些很搞笑的例子, 因而他們的文章較之純理論的文章更容易被咱們記住. 這仍然是基於上述的生理學原理, 咱們用來會議的材料越豐富, 或者這些材料越投咱們所好, 咱們就越容易聯想起來與這些材料相關的東西. 這個原理應該用到些解題報告上來, 那就是儘可能把本身關於這題的, 一些有意思的想法記錄下來. 另外, 記錄本身在解決這題時的思惟過程也是很是有益的. 若是你還不知道思惟過程的重要性, 那麼請去看看波利亞的[How To Solve It](中文譯名"怎樣解題"), 這是每個理工科學生的必讀讀物之一, 甚至你可能會在看完此書的若干年之後纔會忽然體會到其中的一些條款的極端正確性, 因此, 越早看這本書越好. 關於思惟過程, 並非十分容易被記錄下來, 而且, 在你可以明明白白把你對於某題的思惟過程敘述出來以前, 你對於這題的解決始終都是不完整的, 即下次遇到此類題目的變種, 十有八九仍是無從下手(某些大牛可能由於語文水平不足而沒法很好用語言表達, 這是特例...). 寫解題報告的另外一個好處固然是有助於本身複習. 尤爲是在比賽以前看看解題報告是很是有益的, 通常狀況下, 就拿我來講, 在兩個月內作過的題目, 只要掃一眼解題報告, 通常我能立刻把它原樣地用代碼實現出來. 若是不是很肯定本身能堅持寫解題報告, 或者擔憂本身的解法的正確性(不少時候AC了的代碼不必定是正確的), 那麼就去寫blog吧, 把解題報告貼到blog上吧, 也許會有人用很尖銳的言語指出你的錯誤, 但, 那不正是你想要的嗎? 另外貼到blog上也方便了本身往後的搜索. 關於圖論 論資格, 我絕對在ACM隊是派不上號的, 切題數也十分寒酸, 因而當你處於這種狀況的時候就應該考慮主攻某一方面, 畢竟ACM是一項團隊比賽, 一把瑞士軍刀總也沒有幾把專業的刀具功能強大. 我在隊裏主要負責的是圖論, 因此我在這裏着重說一下圖論方面的東西. ACM題目類型主要分爲DP, 圖論, 搜索, 數據結構, 模擬, 計算幾何, 字符串, 組合數學, 數論等, 其中前兩個是重頭戲, 我作過的每場比賽裏, 前兩種題目都是必然會出現的, DP很大程度上須要依靠YY, 即它與IQ的關係很大, 這幾乎是一個毋庸置疑的事實...而且DP的某些思想貫穿大部分ACM題目, 很容易於其它類型題目融合起來, 想要掌握它非一朝一夕之事. 而圖論相對來講並無DP那麼可怕, 比較容易入門, 而且不少圖論類題目能夠套模板, 可是相對的, 圖論題目也能夠出得使人髮指的難, 而且其數學模型每每隱藏在搜索, 計算幾何, 字符串等類型的題目後面, 即表面上看起來不是圖論, 但實際上這題考的倒是圖論原理. 圖論的變形繁多, ACM題目中尤以Dijkstra最多, 看似簡單的Dijkstra, 其變形程度是至關可怕的, 好比會消耗汽油的車的最短路問題, 這就是一個相對簡單的二維Dijkstra, 而更加複雜的, 例如08年哈爾濱賽區的H, 一道隱藏在搜索背後的三維Dijkstra, 全場沒有隊伍出. 解決這類問題的一個根本性方法就是充分理解Dijkstra的定標技術, 以及規範的狀態表示. 何爲規範? 即當狀態維數增高時, 須要對應的結構定義其狀態, 而且此結構體切不可與存入堆的結構相混淆, 只要明確了Dijkstra的狀態表示以及在某些限制條件下的狀態轉移(即圖中的"邊"), 則高維Dijkstra就再也不是沒法攻克的攔路虎了. 圖論的另外一個大頭就是網絡流, 這是圖論中最容易套模板的一部分, 也是極其困難的一部分. 說容易套模板是由於每每這類題目在賽場上自己就是中等題或難題, 若是再不能套模板, 八成就變成了無人能出的大天然題了...網絡流的變形數量幾乎能夠趕的上Dijkstra了, 若是算上匹配類的題目則就是有過之而無不及.網絡流基本能夠分爲最大流, 限制流, 費用流三種, 其中最大流能夠變形爲二分匹配, 費用流能夠變形爲帶權匹配. 其中最大流的算法是其它幾種流算法的基礎, 主流算法能夠分類增廣路類和預流推動類, 這兩類算法幾乎沒有聯繫, 對於ACM, 只要學習前一種就足夠了. 網絡流類題目, 包括匹配類題目的核心思想就是增廣路, 在匹配類題目中特化爲交錯軌, 這也是增廣路類算法的核心. 各類增廣路類算法的區別大都在於如何快速找到一條增廣路, 其中比較簡單的EK就是每次BFS找到一條增廣路, 我就很少說了, 而高級一點的ISAP和Dinic都屬於SAP, 二者都是基於分層圖的思想, 實現分層圖的方法只要爲每一個頂點標記所在層號便可, 其中Dinic是經過一次BFS創建分層圖, 而後按照創建好的分層圖進行屢次DFS找到多條增廣路, 從而不用像EK那樣每條增廣路都作一次BFS. 而ISAP則是在DFS的同時創建分層圖, 即遇到DFS前進不了的時候對下一頂點從新標號, 因而這張分層圖是逐步創建的, 創建後能夠被後面的DFS所利用, 從而下降尋找增廣路的消耗. Dinic和ISAP均可以用"當前弧"技術進行優化, 而ISAP還有一個進須要添加一行代碼的GAP優化, 具體實現很容易在網上搜到. 這裏要特別說一下Dinic和ISAP的適用範圍, ISAP是萬金油, 幾乎能夠應付絕大部分最大流和限制流的題目, 而Dinic特別適用於有向無環圖, 即畫在紙上能夠分層的題目, 此時Dinic每每只總共須要作一次BFS(由於沒有能夠回退的邊), 這時Dinic每每會比ISAP快不少. 要知道網絡流是一個極度悲觀的世界, 任何已知的算法都沒有能突破O(n^3), 因此最大流算法寫得很差很容易超時. 至於費用流, 能夠基於EK算法, 只要將BFS改成SPFA就能夠應付幾乎全部的費用流問題了, 少許須要用到消負環算法的題目只要用SPFA找負環便可. 而限制流則只是一個定式的建圖, 沒什麼特別的地方. 最後還有一種限制費用流, 若是遇到, 幾乎確定就是大天然題, 能夠直接無視之. 關於而分圖匹配的算法, 網上資料不少, 核心思想仍是基於最大流, 只是可能不用最大流來解釋也是能夠的. 其中用於帶權匹配的KM算法只要準備好模板便可, 通常不會有太大變形. 上面一段說的是既有的算法, 大部分均可以模板化, 其中要注意準備模板的時候最要準備針對整數和浮點數的兩種, 對於C++程序員來講, 相應的只要寫成函數模板, 而後傳入比較函數對象便可, 代碼量幾乎不會有什麼增長. 下面要說說網絡流類題目真正的難點之一, 建圖. 網絡流類題目難在它每每伴隨着一個不太直觀的建圖, 其中有些利用到最大流最小割定理的建圖已經有了套路, 好比說限制流的建圖, 最大權閉合圖等, 具體能夠參見國家IO集訓隊2007年胡伯濤的論文. 另一些建圖則頗有技巧性. 好比"比賽"類題目, 有不少場比賽, 要你求得分可否達到某種條件等, 這時須要把每場比賽當作頂點, 而後兩條流進來, 只有一條能夠出去, 這種題目的特點是存在大量容量1的邊. 還有拆點建圖, 這類題目每每一個頂點上包含了2種"屬性", 而網絡流算法中, 屬性是體如今連在邊上的, 儘可能要使每一個頂點表示的屬性單一化, 因而就把一個點拆分紅兩個點, 而後把屬性分配出去, 好比PKU有一題說企鵝在冰塊上跳來跳去, 冰塊就有兩個屬性, 一個是冰上的企鵝數量, 另外一個是冰塊再被起跳多少次後會碎掉, 這時就須要把兩個屬性拆分開來, 拆點的另外一個應用就是求最小點隔集, 其中的思想就是像這題冰上企鵝同樣, 把出度和入度兩個屬性分離開. 另一些更加巧妙的建圖可能涉及逆向思惟等技高技巧性的思惟方法, 這裏就不一一列舉了. 網絡流的難點之二是算法變形, 特別是有的題目在增廣路上作文章. 有一種叫作"連續增廣路"的技術, 須要深刻理解增廣路的原理, 今年的上海賽區F題就是基於連續增廣路的二分匹配加搜索, 雖然以前作過一個基於最大流算法的連續增廣路, 可是很遺憾, 當時沒有能想到這個算法. 另外, 與字典序相關的最大流題目每每須要枚舉刪邊, 如字典序最小邊割集. 與其它類型題目相結合的算法變形就多不勝數了, 最多見的當屬二分答案判可行性, 不少貌似運輸類的問題不少均可以歸結到這種方法上. 剛纔說道了二分答案, 這也是全部圖論類(應該說不只僅是圖論)題目最多見的變形, "最(大)小值最大(小)"是這類題目的最通常特徵. 這類題目經常跟分數規劃聯繫在一塊兒, 好比最優比率生成樹, 最優比率環等. 另外圖論的一些經典算法能夠衍生出不少強大的應用, 好比差分約束就是Bellman-Ford或SPFA的一個最好的應用, 這類題目的建圖關鍵是找出差分式子. 一個須要特別注意的地方是[算法導論]上對於不連通圖上添加頂點的討論, 最好的方法是不用添加頂點, 開始時直接將dis數組清0, 而後全部頂點入隊便可. 生成樹類的題目也有不少變形, 如歐幾里得生成樹, 每每須要利用平面圖上的一些幾何性質建圖, 如曼哈頓距離生成樹, 限制度生成樹等等, 此類題目套路很少, 且知識點比較散亂, 須要多作題來熟練. 圖的連通性也是一個常見的考點. 割點, 橋, 強連通, 雙連通問題的求解不只要準備模板, 還要充分理解模板. 一些地圖上的題目(二維的方格陣), 每每有些特殊的性質, 不只須要你一些建圖的敏感度, 偶爾須要在模板中添加一些巧妙的代碼. 圖論還能夠與組合數學和計算幾何等產生緊密的聯繫, 好比生成樹和圖的計數, 最簡單的諸如n個頂點能夠產生多少個不一樣的無向連通圖, 這時一些組合數學中的基礎原理每每十分有用, 最典型的就是容斥原理. 圖論中還有茫茫多的定理, 性質等. 我所知道的最雷人要數08年哈爾濱賽區那道赤裸裸的Havel定理了. 這些定理和性質可能會在一些意想不到的地方發揮做用. 最後圖論中的一些NP問題或非NP可是代碼很差寫的問題, 如旅行商, 同構, 支配集, 最大團, 以及由樹所引伸出的一大堆樹形DP問題很差準備模板, 但能夠考慮準備一些具備表明性的解題報告的紙版材料. 其中樹形DP是一個很容易寫錯的重頭戲, 它每每還和揹包問題聯繫在一塊兒, 尤爲是泛化物品的揹包, 關於泛化物品, 請參見DD牛的[揹包九講]. 關於工具 ACM的學習, 對於咱們一個弱校來講, 沒有牛B的教練, 沒有嚴格的教學, 最主要的學習方式莫過於收集和記錄, 不管是外部知識的搜索收集, 仍是內部知識的記錄整理, 最離不開的當屬Google. 搜索我就不用說了, 這裏關於知識的記錄和整理, 我要推薦以下幾個工具: Google Docs, Google Desktop, Google Calender, Everything. 前兩個都是輔助你記錄和複習你的解題報告, 第三個用於時間管理以及任務計劃, 詳情請本身去用Google搜索去. 最後一個Everything是windows平臺下特別針對NTFS文件系統的一個神奇的搜索工具, 它能夠僅僅使用約5MB的內存在1秒內搜索出你的全部NTFS盤上任何一個文件名跟輸入關鍵字匹配的文件, 其原理聽說是基於NTFS文件系統的一個特殊的記錄表的. 這個東西的一個最有趣的應用能夠是這樣: 把你硬盤上的全部文件和文件夾都加上標籤吧, 用"[]"括起來, 而後用","隔開, 而後任什麼時候候你均可以經過標籤搜索到你想要的東西, 一切圖片, 論文, 軟件等等, 好比PKU的1001題我就能夠加上"[java,BigDecimal,浮點數,高精度]"之類的字樣. 甚至更精細一點, 定義一些特殊的tag, 好比"tag.r"表示"須要review", "tag.h"表示"我是在別人的help下作出的題目", "tag.p"表示"這題我還有未解決的problem"等等. 關於學習 我所知道的關於學習, 90%來自於[www.xiaolai.net](李笑來的blog), 和[www.mindhacks.cn](劉未鵬的blog), 把裏面關於學習方法的文章看完, 你就昇華了. 在此特別感謝上海第二工業大學的王學長告訴我Google Reader的存在, 大二開始的時候我由於這個接觸到blog這種東西, 讓我對學習方法有了一個相對清醒的認識. 也許不少所謂的方法咱們早就知道了, 可就是"不少道理咱們其實咱們老早就知道, 只是須要一個權威人士告訴咱們它確實是正確的". 這裏特別要說一些關於學習效率和順序的問題. 大二就去看什麼人工智能, 天然語言處理, 對於絕大多數人來講, 那就是低效, 甚至你在看這些書的時候連筆記都不知道該怎麼記, 更況且還有那麼多人看書都沒有記筆記的習慣. 可是即便你用心作了筆記, 也不必定能學到什麼東西, 好比我當時就將近記了一大本的關於人工智能, 心理學之類的東西, 可如今回頭看看一恰的筆記幾乎已經不敢相信那是我本身寫的了, 徹底不認識. 究其緣由有二, 一是先導知識儲備不足, 二是沒有及時回顧筆記. 這兩點在不少人的學習過程當中都在不斷重複上演着, 其結果就是浪費了大量時間卻學不到什麼東西. 所謂的"作開發"也是如此, 連關係數據庫的幾個範式都不知道是什麼就去弄什麼SQL Server, 搞什麼ORM, 全都是空談, 充其量也就是會用用工具而已. 就我目前的經從來看, 我認爲做爲一個軟件方向的CS學生, 相對高效的學習方案應該是學基礎課時學好高數和英語(我如今就特別想再去重學高數), 閒暇時間搞搞C++, Java, 等各類語言, 至少作到一個瞭解的程度, 個別的要熟練, 與計算機軟件關係不是很大的理科課程成績搞到90+就行, 好比物理, 好比電路, 線性代數很簡單, 機率論要特別認真學, 特別是常常要拿起來複習複習, 這是一門終身受用的學科. 而後其他的時間能夠用來啃算法導論, 相信我, 這本書普通人大學四年根本不可能啃完. 總之數學類的書看的再多都嫌少. 另外能夠擴展出去接觸一些人文類書籍, 特別是傳記類, 勵志類的東西. 關於修養 我剛上大學的時候有這麼一個習慣, 拿一些本身心中已經知道答案的問題去請教老師, 以顯得本身很好學, 很牛B. 記得我有過在軟件工程選修課上跑去問咱們學校有沒有關於"設計模式"的課程, 或者問ben一些明顯Google一下就能知道答案的問題...等等等等都是心裏浮躁的表現. 自我修養是一種很要緊的東西, 對於一個性格內向的ACMer來講, 這每每不會有什麼問題, 這是由性格決定的, 但不是每一個人都性格內向, 不是每一個人都能保持內斂. 一旦你有裝B(一切驕傲, 或者由於本身的某方面才能而沾沾自喜, 或者想要顯露本身, 無論和不合適, 暫且用"裝B"來代替吧)的行爲或者想法, 或者僅僅是潛意識, 那就預示着你會被大多數人看不起, 會大量浪費本身的時間, 會下降本身的學習效率, 會使本身成爲井底之蛙. 不過徹底不裝B倒也不太好作到, 好比我覺得本身寫blog多少有些顯露本身的意思, 自我分析一下, 動機大概有以下幾條: 想讓往後身邊的某人忽然發現我說:"啊, 你就是Answeror啊!", 想讓我之前女友在若干年後忽然發現個人blog說:"原來我之前男友這麼好學, 這麼有修養有文化!", 想讓我被某些大學教授或者公 司裏的人認識, 想結交志同道合朋友, 想讓別人給個人解題報告挑錯... 寫blog這件事情也就算了, 畢竟是件利人利己的好事, 偶爾裝裝B也就算了. 可是像我在本文開頭說的那樣, 剛進華理僅僅由於本身有點C++和網絡工程知識的皮毛就裝出一副很牛B的樣子, 那種裝任誰都沒法忍受. 尤爲是第一次跟羅老師的談話, 簡直就是裝到了極點, 以致於我後來就有這麼一個想法: 反正我能夠作技術活, 幹嗎非要搞ACM, 我能夠自由地去學心理學, 學人工智能, 學.NET, 我牛B着呢, ACM算個屁. 而後我就傻BB地搞了5個月的.NET, 而後到大三上數據庫原理的時候發現當時花了一個星期學的種種東西如今只是一節課的事情, 直到那時我還在裝B, 跟旁邊的同窗說我上述的體會, 仿彿就是在告訴他說:"你看我牛B吧, 我老早就知道這是什麼東西了, 還作過它的開發", 時至今日, 我仍然有時會忍不住在同窗討論C++種種語言特性時上去插插嘴, 裝裝B. 高中的一個好友曾這樣形容我: "他這我的啊, 只要看了什麼書或者電影之類的, 就要立刻在他的文章裏體現出來". 聽起來很可笑吧, 請正在看這些文字的你不妨停下來反思一下本身最近一個星期有沒有相似的行爲? 做爲一個ACMer, 改掉這些吧. 咱們作ACM的, 原本在這個學風不正的計算機學院裏就是一羣特殊人羣, 咱們須要作的僅僅是不停地補充知識, 完善本身, 不必費盡心機去博得他人的一兩句讚美之辭. 我是誰? 我就是華理的一個ACMer. 我天天窩在機房裏爲的不是哪天去比賽有小MM來找咱們簽名, 而是讓本身精通各類算法, 提高本身的數學修養, 加強本身解決問題的能力, 培養本身內斂的人格, 而後在某日某公 司的面試時讓面試官打心地裏認爲我是我的才, 而後用我之前長期積累的知識寫出卓越的軟件. 但願你我都能早日心安理得地說出上面的話.     http://forum.byr.edu.cn/bbscon.php?bid=212&id=36861
相關文章
相關標籤/搜索