凡是過往,皆為序章。
你好呀,我是繁凡!這裡是一名雙非 ACM 弱校的零基礎菜雞演演算法競賽選手與博主的競賽生涯回憶錄。
伴隨著第四十六屆 ACM/ICPC1 亞洲區域賽 2021 賽季的結束,小菜雞繁凡的 ACM 退役記如期而至。儘管不會掀起任何波瀾,但還是要為我大學兩年的努力留下最後一絲回憶。這是第一次撰寫 ACM 比賽相關的隨筆,卻也是關於 ACM ,最後一次的記憶。
這篇退役記在 2022 年元旦才送達至大家的手中,但實際上我早在 2021 年上半年也就是在大二末的時候就已做出了退役的選擇。至於為什麼這麼早就退役,其實很簡單。當我意識到接下來大三一年就算我繼續全身心投入訓練也大概率難以獲得超過我現有成績的獎項時,答案其實已經很明顯了,我必須為我的未來負責。
先簡單地向大家介紹一下我自己叭!我呢,其實就是一個非常普通的小菜雞,上大學以前沒有接觸過任何程式設計知識 ><。小學初中的時候家裡管的比較嚴,一直成績還算不錯,中考考入了鄭州市一所省重點的重點班。上了高中以後開始放飛自我,在高中打了幾年遊戲,王者三千把,爐石勝場上萬把,大大小小各式遊戲 「 全精通 」 以後,2018 年的高考,我交出了高考總分 347 分的 「 完美 」 答卷。我一直自認為是一個隨性灑脫的人,儘管我的高考成績如此糟糕,也確實一點高中知識都沒有學,但我卻完全沒有不相信自己,沒有失去希望。我選擇了再來一年,抱著 「已經這麼糟糕了,學會任何知識都是一種進步」 的心態,開始了一年沒有任何壓力的復讀時光。當我能接受最壞的結果的時候,反而可能會做得更好。18 年 8 月高考 347 分開始復讀,那時三本都上不去,19 年 6 月高考 567 分入學雙一流大學計算機專業2,二百多天,沒有什麼天賦異稟,沒有什麼一步登天,有的只是日復一日的堅持和每天滿滿收穫的喜悅。有趣的是在我 19 年高考結束直到現在,曾經一秒鐘不玩就難受的遊戲竟一次都沒再碰過,取而代之的閱讀、寫作、運動、吉他,讓我每天都過的充實而快樂 ^ 0 ^
生活似書,翻過這一頁,另一頁會有新的篇章。
對我復讀經歷感興趣的朋友可以看一下我在19年寫下的一篇知乎回答:你在高三是怎樣大幅度提高成績的? - 繁凡的回答 - 知乎,在兩年後的今天,我的那篇回答收穫的兩萬多的贊同以及近五萬的收藏著實讓我有些受寵若驚 >< 想到幫助到了這麼多的人,一切的努力都充滿了意義。
當初選擇參加 ACM 也只是為了圖一樂,因為感覺 ACM 很厲害,所以希望自己也能加入其中,希望自己能玩的開心,能夠從中學到一些知識,收穫一些快樂就足夠了。零基礎的我沒有想到竟然真的可以獲得這麼多獎項,寫部落格也只是為了記錄學過的那些簡單的知識和跳躍的靈魂,收到大家這麼多的支援與鼓勵真的太好了!
這兩年的經歷也比較普通,作為一個很普通的零基礎 ACMer,大一入學前的暑假簡單地學習了 C 語言,簡單地自己一個人訓練了一年多的時間,簡單地刷了不到三千道題目,簡單地寫了幾篇簡單的部落格,簡單地參加了幾場線上線下比賽,簡單地拿到了幾個獎項,再到現在簡單地退役。不過還是很可惜差一點就能湊齊金銀銅鐵,希望以後還能有機會(不可能再有機會了>_<)。
其實簡單回顧一下我這兩年來更新的 707 篇原創 CSDN 部落格 ,大致已經可以完整地勾勒出我的 ACM 生涯。
2019 年 10 月 24 日,我更新了人生中的第一篇部落格:「我的c錯題本」,那時才學完 C 語言的我,剛剛僥倖成為我校 ACM 預備隊的一員。在 1024 這個對於程式設計師最為特殊的日子,第一次在網路部落格上傳出了自己的聲音。隨後更新的若干篇洛谷和 HDU 入門難度題目的題解,無不昭示我正在為接下來 12 月初的 ACM 新生賽做準備。
2019 年 12 年 1 日,如願加入 ACM 集訓隊的我,正式開啟了屬於我的 ACM 之旅。由於聽說在接下來的的寒假集訓中學長會為我們講解動態規劃演演算法,沒什麼頭緒的我開始了自學,完成了我的第一篇長篇部落格: 【演演算法】動態規劃+「揹包九講」原理超詳細講解+常見dp問題(9種)總結 。之後的 12 月、1 月、2 月、3 月寒假在家一直處於一種隨便學的狀態,自己拿著《演演算法競賽入門經典》和洛谷一通亂啃,更新了 17 + 8 + 44 + 49 篇部落格,自學了一些簡單搜尋,動規,簡單數論,STL,簡單資料結構,簡單圖論之類的基礎演演算法。
2020 年 3 月,受疫情影響,學校實行線上教學,閒來無事的我接觸到了《演演算法競賽進階指南》這本書,立刻被它的通俗易懂所吸引,並因此瞭解到了 AcWing 這一平臺,開始了《演演算法競賽進階指南》和 AcWing 演演算法提高課的雙料學習,完成了《進階指南》的學習筆記: 「演演算法競賽知識合集 目錄(部落格中轉站)」。除此之外,4月份的我還發布了兩個 「 大專案 」。一個是 4 月 15 號釋出的 「《資料結構》C語言版(清華嚴蔚敏考研版) 全書知識梳理 + 練習習題詳解(超詳細清晰易懂)」,那時學校正在上《資料結構》這門課,於是我就順便整理了一下,沒想到後來竟成為了我部落格里存取量最多的系列。另一個是 4 月 13 號釋出的「繁凡的 ACM 模板」 。因為某天在部落格上看到大佬們自己總結的演演算法模板,便想著自己也總結一個。大概用了半年的時間斷斷續續地整理完畢,但是感覺整體品質不是很高,於是就有了後來的演演算法全家桶,不過那都是後話了。
接下來 2020 年的 5 月、6 月、7 月、8 月,《演演算法競賽進階指南》學習筆記基本更新完畢,慢慢更新了大量的《ACM模板》,也完成了《資料結構》的寫作,期間更新了 37 + 35 + 60 + 45 篇部落格,三個專案有條不紊地進入收尾階段。
2020 年 9 月份開始學習計算幾何和網路流,整理了《計算幾何全家桶》,這個時候的我基本上把所有的圖論知識都給學完了,題也刷了不少。由於隊內沒有數學手,原本作為圖論手的我就臨危受命,開始鑽研數學板塊。數學涉及到的內容非常的多:數論、多項式、組合數學、線性代數、概率論、博弈論、群論,每一個板塊都意味著一個全新的領域,我喜歡這種挑戰的感覺。在學習多項式的時候,由於多項式知識點較為複雜且環環相扣,很多大佬都整理了自己的《多項式全家桶》。本著 「 我也要玩 」 的基本原則,整理了屬於自己的 【學習筆記】多項式全家桶(包含全套證明) 。受此啟發,出現了一個 「 要不要把所有學過的演演算法都整理成相應的演演算法全家桶 」 的可怕念頭^q^ 。尤其是我在學習數學板塊的時候發現網上的資源雜亂無章,品質參差不齊,於是在 1 月份寒假期間,開始在家創作出了我的第一本書:數論全家桶之 《演演算法競賽中的初等數論》(ACM / OI / MO)(十五萬字元的數論書) ,個人感覺整體品質非常高,感興趣的朋友可以點開看一下 o(〃^▽^〃)o 。然後就有了包含多項式全家桶、數論全家桶、組合數學全家桶、線性代數全家桶、圖論全家桶、生成函數全家桶、群論全家桶、計算幾何全家桶、博弈論全家桶、概率與期望全家桶的 《繁凡的ACM演演算法全家桶》 的問世^q^
2021 年 2 月,為了備戰 ICPC,開始了備賽第一階段:每天一場 Codeforces 的每日億題環節。不過打完一場 CF 不難,寫完一篇完整的題解還是蠻累的哈哈哈。在 VP 刷了三十多場 Codeforces ,寫了二十多篇 Codeforces 題解以後,2021 年 3 月學校開學,因此開啟了備賽的第二階段:每週三場 5 小時 ICPC 真題全真模擬賽。每場賽後儘量補完所有能補的題目,心情好了就寫成比賽題解發出來:ACM - ICPC 真題,幾個月來零零散散倒也寫了十多場比賽的題解。經歷了半年的模擬賽 - 比賽 - 模擬賽 - 比賽以後,我的 ACM 生涯也慢慢接近尾聲。
2021 年11 月 13 號,ICPC 濟南站比賽前夕,一位朋友通過 QQ 找到了我,向我傳達了想要把演演算法全家桶列印下來當做模板的期望,非常高興我的部落格受到了大家的認可,於是我連夜加更,把我的所有優質部落格全部都整理了出來: 「我的所有優質部落格全部開源啦(我自己原創的《ACM模板》《演演算法全家桶》《演演算法競賽中的初等數論》 PDF免費下載)」。至此, 我的 ACM 生涯畫上了一個逗號。
2022年 1 月 1 日,斷斷續續寫了將近半年的 《繁凡的 ACM 退役記》 終於圓滿完成。在釋出出它的那一瞬間,我的 ACM 生涯成功畫上了最後一個句號,我真的退役了。
一直以來在 CSDN 部落格上,記錄我 ACM 生涯的點點滴滴。每天把自己刷到的自認為不錯的題目或是自己沒有寫出來的題目寫成個人題解發布出來、把學到的新知識用自己的話總結一遍、把打過的比賽寫成自己的題解為大家分享不同的思路,刷題,寫作,分享,儼然成為了我生活中的一部分。慢慢的來了許多的朋友,參觀我的部落格,為我點贊,為我加油,也給了我繼續下去的動力。
這裡有一個小彩蛋,1 點 39 創作 Codeforces 題解是因為那場比賽在 1 點 35 結束哈哈哈。不過因為學校 11 點寢室會斷電鎖門,開學以後就很少會打 Codeforces 正式的比賽了 ><
回顧完我的經歷以後,我們回到競賽本身。近幾年 ICPC 的各種亂象大家有目共睹,我還曾經匿名在知乎衝過一次銀川賽區,收穫了好幾百贊 o(〃^▽^〃)o 出題人的心情決定參賽者的人生,我不喜歡這種被支配的感覺。雖說菜是原罪,但還是希望各位用愛發電出題的 OI 爺們3能稍微提升一下只有兩三年學習時間的零基礎大學生們的遊戲體驗,真的沒那麼多時間學那麼多演演算法 >< 。恰巧碰上了這個 「 網賽八百隊4,OI 遍地走5 」 的時代,零基礎選手的生存空間被擠壓殆盡 … 想要拿到更高層次獎項的難度大大增加 …
偶然間看到的一位大佬寫的部落格,大概也代表了我的心聲。
不想打演演算法競賽了。這是因為有別的事情要做,不是因為我打不動。
不想打比賽凌晨兩點才睡了。因為我會困。
不想在群裡和高水平選手水群了,因為我想獨處。
不想去打區域賽,和 ICPC 選手多交流什麼了,因為感覺中國選手都沒幾個好好打的。
不想出題了,一是因為我菜,二是因為我沒有時間。
不想一年拉著隊友訓練三百場,因為我更想讀讀論文。
不想把過多意義投入到比賽中,因為這不是我想看到自己的樣子,也不會讓我成為我想看到的未來自己的樣子。
好像文章的基調變的憂傷了起來,但我仍然推薦大家參加 ACM 競賽。儘管近年來比賽亂象叢生,但是不可否認,它仍然是最為公平的競賽。在各方的努力和出題組的用愛發電之下,比賽已經漸漸回到正軌。ICPC 仍然是計算機專業最具有含金量的比賽。對於本科並不是特別厲害的同學,ICPC 的獎項仍然可以為你工作面試提供非常大的助力。我校集訓隊多年來每屆的學長學姐們,都是從完全零基礎開始,通過自己的努力,拿到各種獎項,並在 ACM 獎項和 AK 筆試的助力之下,以雙非本科畢業生2的身份一畢業就進入了網際網路大廠,拿到了誘人的薪資,今年即將畢業的幾位學長學姐更是已經拿到了網際網路公司頂尖大廠的 SP offer 和 SSP offer 我只能 %%% 。並且學長學姐們能拿到 offer 更大的原因是他們 AK 了筆試,和 ACM 培養的超強的學習能力以及程式碼能力,獎項倒是次要的因素。這也是我一直想說的一件事,參加 ACM 競賽更重要的是能力的提升,對於一個零基礎的選手來說,短短几年 ACM 競賽的訓練,能讓你一生受益。因此我一直堅信 ACM 競賽仍然是一個非常好的機會,不管是誰,我相信都能在 ACM 競賽中收穫不一樣的青春。
但紋麒麟者,凡事無愧於心,於心有愧者,麒麟踏火焚心。
那麼有沒有什麼對大家的建議呢:
年輕人,你的職責是平整土地,而非焦慮時光。你做三四月的事,在八九月自有答案。
那麼退役後的這段時間,我都幹了些什麼呢?我自學了深度學習,學完了李宏毅老師的《2021春機器學習課程》,吳恩達老師的《神經網路與深度學習》,看完了龍龍老師的《TensorFlow2.0深度學習》,李沐老師的《動手學深度學習》,在慢慢看《深度學習》花書,整理創作了:《繁凡的深度學習筆記》前言、目錄大綱 一文弄懂深度學習所有基礎
《繁凡的深度學習筆記》前言、目錄大綱
連結:fanfansann.blog.csdn.net/article/details/121702108
第 01 章 深度學習綜述(萬字綜述)
第 02 章 迴歸問題與神經元模型
第 03 章 分類問題 (邏輯迴歸、Softmax 迴歸、資訊理論基礎)
第 04 章 TensorFlow2.0 從入門到昇天
第 05 章 PyTorch 從入門到昇天
第 06 章 神經網路與反向傳播演演算法
第 07 章 過擬合、優化演演算法與引數優化
第 08 章 折積神經網路 (CNN) 從入門到昇天(萬字綜述,清晰易懂)
第 09 章 迴圈神經網路 (RNN) 從入門到昇天(萬字綜述,清晰易懂)
第 10 章 注意力機制與Transformer詳解
第 11 章 圖神經網路詳解(萬字綜述)清晰易懂
第 12 章 自編碼器詳解(萬字綜述)清晰易懂
第 13 章 生成對抗網路詳解(萬字綜述)清晰易懂
第 14 章 強化學詳解(萬字綜述)清晰易懂
第 15 章 元學習詳解(萬字綜述)清晰易懂
第 16 章 對抗攻擊與防禦詳解(萬字綜述)清晰易懂
第 17 章 遷移學習詳解(萬字綜述)清晰易懂
各位保研、考研、想要入門深度學習的大佬,或是對深度學習感興趣的大佬可以進來閱讀一下 >< ,內容非常翔實,我相信您一定能夠有所收穫!(哪怕您對深度學習不感興趣都看到這兒了就點進 連結 給孩子一個 ☆ Star \boxed{☆\ \ \text{Star}} ☆ Star 吧 >< 球球了!)
退役以後,我還是每天抽時間堅持刷題,每天一題 BZOJ 就圖一樂(BZOJ計劃),希望有生之年能把 BZOJ 寫完 ^q^ 還未完工的演演算法全家桶我還是會慢慢完成它的,圖論全家桶已經完成了 70% 了!我寫過的所有自認為品質還不錯的部落格比如《演演算法全家桶》,自己整理的 400 頁ACM模板,引以為傲的原創《演演算法競賽中的初等數論》,《資料結構》,這些我自己個人原創的部落格 P D F 版檔案已經在 11 月的時候全部開源送給大家啦,有需要的可以自取: 「 我的所有優質部落格全部開源啦(我自己原創的《ACM模板》《演演算法全家桶》《演演算法競賽中的初等數論》 PDF免費下載) 」 (看完記得點個贊哦)。
我國知識分子素有 「 為天地立心,為生民立命,為往聖繼絕學,為萬世開太平 」 的志向和傳統。我會繼續在部落格中分享我的所見,所聞,所學,所想,願自己能夠擔負起歷史賦予的光榮使命,成為一個 「閃閃發光」 的人。
今 で も あ な た は わ た し の 光
那麼就是這樣!對大學兩年時光做了一個簡單的總結,我是繁凡,一個退役的蒟蒻 ACMer ,希望大家快樂!
往者不可諫,來者猶可追。
ACM/ICPC 指國際大學生程式設計競賽(英文全稱:International Collegiate Programming Contest(簡稱ICPC))是由國際計算機協會(ACM)主辦的,一項旨在展示大學生創新能力、團隊精神和在壓力下編寫程式、分析和解決問題能力的年度競賽。經過 40 餘年的發展,ACM 國際大學生程式設計競賽已經發展成為全球範圍內歷史最悠久、規模最大、最具影響力的大學生程式設計競賽,賽事頒發的獲獎證書也為世界各著名計算機公司、各知名大學所認可。 ↩︎
雙一流 OR 雙非? 我們學校既是雙非,又是雙一流(一流專業也叫雙一流嘛),所以在我想要凸顯從300分的三本到我們學校的跨度之大時,我願稱之為雙一流。在我想要體現我們學校與985,211的差距進而彰顯學長學姐能拿到大廠 SSP offer 的強大,我願稱之為雙非(手動狗頭)。 ↩︎ ↩︎
OI 爺 指在初中或高中時期參加全國青少年資訊學奧林匹克競賽的同學,資訊學奧賽與 ACM/ICPC、CCPC 等相同,均為程式設計類演演算法競賽,學習和考察的內容幾乎完全相同,在初高中參加過資訊學奧賽的同學上大學以後幾乎無縫連結繼續參加 ACM/ICPC ,大一剛入學就已擁有超過零基礎大學生學習三四年的實力 ↩︎
網賽八百隊 由於疫情影響,線下二三百隊按比例發獎牌的比賽改成了線上八百隊的盛況,線上上比賽哪怕 800 支參賽隊伍仍然按作 350 支參賽隊伍的獲獎比例為標準作為獎牌數量的上限的情況下,比賽難度陡然增加。 ↩︎
OI 遍地走 由於 OI 資訊學競賽招生政策的調整導致,大家懂得都懂,我就不細說了。OI 爺們多學了至少兩年的資訊學競賽,對完全零基礎的大學生們來說可謂是降維打擊。 ↩︎