1. 程式人生 > >It's the Climb

It's the Climb

轉眼間,2018年藍橋杯大賽落下帷幕。從寒假開始準備到現今拿到國二,這段經歷讓我充實了很多。

想要參賽的原因比較簡單,有些功利地覺得在大二應該拿點和專業相關的獎項,豐富一下簡歷。

校內賽安排在去年年底,比較好過,只要有點程式設計基礎,大概率能拿到公費參加藍橋杯省賽的名額。賽前參加了本院研究生學長學姐的“藍橋杯培訓”,是針對一些基本且重要的演算法進行的幾次講解授課。此外,我當時在網路上到處找學習渠道,比如看過一些演算法講解視訊,看了一兩章劉汝佳的紫書(比較難,自學有些缺乏動力),在leetcode上刷了二三十道題,就這樣算入了個門。可惜最後因為時間衝突,沒有參加校內賽,所以我決定自費(300元)參加省賽,報名的是C/C++ B組。

我清楚地知道寒假應該開始準備了,不然竹籃打水一場空(主要是浪費我的報名費!)。於是從1月末開始,我開始在各大刷題網站上學習刷題。從寒假陸陸續續地刷題到開學後一直坐了一個月的圖書館一樓,兩個月時間,我奔赴省賽賽場。比完之後本覺得已經沒有希望了,因為犯了一些特別低階的錯誤,但結果出乎意料,竟然省一了。當時又興奮又緊張,不知道之後該怎麼準備能在國賽有好的表現。

於是我又開啟了圖書館模式,期間因為參與數學建模校內賽,也耽誤了不少時間。4月到5月,我在CSDN上看了一些演算法部落格(CSDN真的大神雲集),學習了一些圖論演算法和字串演算法,基本沒怎麼做搜尋和動態規劃的題。其實我心裡知道藍橋杯沒有這麼難的,但我還是希望能碰碰運氣,萬一遇到一些難題我也能搞定。

5.26日,隨著學院的參賽同學們一同來到北京,不得不說學院鄔老師的安排真的很周到。國賽賽點在北方工業大學,一共兩道結果填空小題,一道程式碼填空小題,三道程式設計大題。賽場上,我剛開始做前兩道搜尋的結果填空題沒能跑出來(優化剪枝沒寫好),先跳過了,第三道程式碼填空題是自己做過的類似題,思考了一下也填上了。但是,第一道程式設計大題可能是我這次比賽的敗筆。當時我以為它也是我曾經做過的一道類似題,一直想往之前的思路上面套,但是總是不成功,又修改,這樣來來回回浪費了大概四十分鐘(回想起來真是可惜!)。我一些慌了,趕緊把最後一道大題暴力小資料AC掉,重新回來像開了掛一樣直接搞定了前兩道小題,繼續開始做第一道大題。這時候我勸自己不要太固執了,於是索性放棄之前的思路做法,以自己的簡單思路來做,最後比較順利地AC了可能近60%的資料(注意:賽場上不會現場判分,我是自己根據題上給的資料範圍來測試估計的)。然而,第二道大題是我覺得超級簡單的dfs題,可是當時只剩13分鐘,我遺憾地並未寫完程式(再給我五分鐘就行了!),於是這樣和約100分的分值失之交臂。比賽剛結束,和學長討論題說應該最後一道大題可以用素數打表來優化,思考後覺得確實可行,可我當時因為時間不夠只是暴力過了小資料,實感遺憾!

次日比賽結果便出來了,國二,雖然不算太差吧,但比賽中的遺憾讓我感到有些可惜。另外的感受是,藍橋杯確實比想象中簡單,今年國賽竟然只考動態規劃和dfs,因此我4~5月的演算法準備皆無用武之地,純當充實自我了。

回想起坐在圖書館一樓的這幾個月,覺得很充實。靜靜地在自己世界裡學習一些有用的東西,是很美好的,如果能夠有一定的正向反饋,更能激勵自己繼續積累從而不斷前進。我認為這屆藍橋杯帶給我的不僅是在演算法上的知識儲備,更是對這個領域的一個認知。這次的備戰過程我是孑然一人的,但在網路上我瞭解到有很多正在奮力學演算法的人,親身體會“比你優秀的人還比你努力”。比如CSDN部落格上有很多博主的oj解題報告以百計量,其他高校很多大佬日以繼夜地打各種演算法比賽,有次我在查C++STL的時候竟然看到上海市的一位初中生的演算法部落格(內心感受此處省略一千字)。所以,儘管“藍橋杯”告一段落,我清楚自己所學僅為冰山一角,仍需要繼續學習感受演算法的博大精深。

對於基本演算法的學習,我主要推薦一些網站:牛客網、洛谷、CSDN部落格、計蒜客。如果真的能靜下心來多學習一些新東西,多做一些題,一定能有所收穫。

“藍橋杯”只能算是我演算法學習的一個開端,也是視角眼界的一個擴充套件。如果能夠把握現有的機會和環境,潛心學習,明白自己所想要的並付諸時間精力,厚積終將薄發。