CCSP金獎(jiǎng)?wù)f | 清華大學(xué)蒙瑞?。簞?chuàng)新方式學(xué)習(xí)算法知識(shí),真實(shí)情境鍛煉系統(tǒng)能力
清華大學(xué)蒙瑞俊在2024 CCF CCSP競(jìng)賽中獲得金獎(jiǎng),每年CSP高分考生(200分及以上)均可報(bào)名參加CCSP競(jìng)賽。第36次CSP認(rèn)證考試將于12月8日舉辦,報(bào)名正在進(jìn)行中。CCF不定期邀請(qǐng)CSP高分和CCSP獲獎(jiǎng)選手分享經(jīng)驗(yàn),希望能夠幫助同學(xué)們?nèi)〉酶蟮倪M(jìn)步。
非常歡迎更多CSP優(yōu)秀學(xué)子分享自己的寶貴經(jīng)驗(yàn),聯(lián)系:csp@ccf.org.cn
一、從OI走上計(jì)算機(jī)科學(xué)之路
小學(xué)時(shí)一個(gè)安靜的午后,我偶然翻開了父親的編程課本,泛黃書頁上的一條條語句在我的心里播下了一顆計(jì)算機(jī)科學(xué)的種子。我開始在知識(shí)之樹上獨(dú)自“隨機(jī)游走”,為學(xué)到的一個(gè)個(gè)新技能而欣喜雀躍。
初中一個(gè)熱鬧的下午,學(xué)校IT社的例會(huì)剛剛結(jié)束,教我們信息技術(shù)的馮婉華老師走進(jìn)機(jī)房,發(fā)布了即將到來的“NOIP”比賽的通知,還“點(diǎn)將”身為科代表的我——“你要不要來試試?”
一點(diǎn)點(diǎn)“啃”新買的算法書,晚自習(xí)在紙上手寫堆排序的代碼,再借整理班級(jí)資料的上機(jī)機(jī)會(huì)提交……就這樣,經(jīng)過幾個(gè)月的學(xué)習(xí),我第一次參加了NOIP競(jìng)賽,也打開了算法世界的大門;我的計(jì)算機(jī)知識(shí)學(xué)習(xí)也聚焦到了算法領(lǐng)域,轉(zhuǎn)變成“迭代加深搜索”。
升入高中,在學(xué)校信息學(xué)競(jìng)賽教練胡冬明老師的指導(dǎo)下,我和學(xué)校01社的社友們一起,沿著信息學(xué)競(jìng)賽的道路不斷前行,在CCF主辦的CSP、NOIP、NOI等一系列認(rèn)證和競(jìng)賽的考場(chǎng)里留下了足跡。經(jīng)過訓(xùn)練和比賽,我對(duì)算法有了更深的認(rèn)識(shí),也開始將算法的思維運(yùn)用到生活和高中課程學(xué)習(xí)中。
正如高中競(jìng)賽教練胡老師在機(jī)房白板上寫的那樣,“計(jì)算機(jī)科學(xué)之路從這里開始”,信息學(xué)競(jìng)賽為我展現(xiàn)了算法的神奇,為我指引了一條可行的計(jì)算機(jī)知識(shí)學(xué)習(xí)路徑。一路走來,我要感謝父母的支持,感謝廣西大學(xué)附屬中學(xué)馮婉華老師、唐志老師和南寧市第三中學(xué)胡冬明老師的引導(dǎo),也要感謝CCF搭建并堅(jiān)持維護(hù)信息學(xué)競(jìng)賽這個(gè)寬廣的平臺(tái)。
二、在CCSP鞏固算法和系統(tǒng)能力
來到大學(xué),我的計(jì)算機(jī)知識(shí)學(xué)習(xí)模式轉(zhuǎn)變?yōu)椤皬V度優(yōu)先搜索”,在算法等理論計(jì)算機(jī)科學(xué)領(lǐng)域之外,我也開始了解計(jì)算機(jī)系統(tǒng)、人工智能、量子信息等領(lǐng)域的知識(shí)。盡管已記不清細(xì)節(jié),但從前學(xué)過的算法背后的思想幫助我理解了更多的方法和機(jī)制。同時(shí),在計(jì)算機(jī)領(lǐng)域的科研嘗試中,我體會(huì)到了閱讀文獻(xiàn)解決問題這一“現(xiàn)學(xué)現(xiàn)用”學(xué)習(xí)方式的重要性。
就在OI的一切逐漸遠(yuǎn)去之時(shí),我看到了清華算協(xié)組織參加CCF CSP認(rèn)證的通知,決定參加認(rèn)證找回運(yùn)用算法解題的感覺。與高中時(shí)不同,我開始注意代碼風(fēng)格規(guī)范,并靈活運(yùn)用標(biāo)準(zhǔn)庫,取得運(yùn)行效率和開發(fā)效率的更好平衡。
在此基礎(chǔ)上,我參加了今年10月份的CCSP競(jìng)賽。它與傳統(tǒng)的算法競(jìng)賽不同,一方面比賽時(shí)間長且可以攜帶電子資料,給了選手充分的學(xué)習(xí)和思考時(shí)間,“現(xiàn)學(xué)現(xiàn)做”的創(chuàng)新比賽方式鍛煉了學(xué)習(xí)能力;另一方面除了算法還考察計(jì)算機(jī)系統(tǒng)能力,題目情境多樣而真實(shí),提供了應(yīng)用所學(xué)知識(shí)、快速上手一個(gè)領(lǐng)域的機(jī)會(huì)。
在本次競(jìng)賽中,我在“貝殼統(tǒng)計(jì)”一題中把問題轉(zhuǎn)化為帶修改的莫隊(duì)模型,并現(xiàn)場(chǎng)思考了轉(zhuǎn)化的算法。在“數(shù)樹”一題中,我通過翻閱OI Wiki現(xiàn)場(chǎng)學(xué)習(xí)了Euler Tour Tree這一數(shù)據(jù)結(jié)構(gòu),并對(duì)動(dòng)態(tài)樹問題有了基本的了解。雖然我的實(shí)現(xiàn)不能通過本題,但我也從中學(xué)到了知識(shí);樸素做法能夠通過本題,這也提示我在今后的學(xué)習(xí)和科研中要更大膽地嘗試?!白粉櫃z測(cè)”和“NUMA感知的調(diào)度系統(tǒng)”兩道題目以模擬為主,雖然不像往屆的題目那樣考點(diǎn)豐富,但也鞏固了我的代碼實(shí)現(xiàn)和調(diào)試能力。此外,“I/O任務(wù)調(diào)度隊(duì)列”一題簡單的貪心算法事實(shí)上并非最優(yōu)這一點(diǎn)也提示我要謹(jǐn)慎推理和思考。同時(shí)我也開闊了視野,結(jié)交了好友,賽里賽外都收獲不少。
CCSP2024現(xiàn)場(chǎng)留影
三、將CCSP備考與學(xué)習(xí)科研有機(jī)結(jié)合起來
最后,我也簡單分享個(gè)人備考CCSP的幾點(diǎn)小經(jīng)驗(yàn)。
第一,對(duì)于算法題,在算法與數(shù)據(jù)結(jié)構(gòu)等課程學(xué)習(xí)的基礎(chǔ)上,多思考各類題目、參加比賽是提高解題能力的關(guān)鍵。不同難度的比賽也可對(duì)應(yīng)不同的訓(xùn)練重點(diǎn),較難的題目可鍛煉思維,較簡單的題目可用來提升代碼實(shí)現(xiàn)的優(yōu)雅性。
第二,對(duì)于系統(tǒng)題,我認(rèn)為既要熟悉計(jì)算機(jī)系統(tǒng)的各個(gè)領(lǐng)域的基礎(chǔ)概念和方法,又要鍛煉開發(fā)能力。對(duì)于沒有學(xué)過相關(guān)課程的同學(xué),除了通讀相關(guān)書籍、練習(xí)配套實(shí)驗(yàn)外,利用往年的CCSP題目,“順藤摸瓜”了解相關(guān)概念也是很好的學(xué)習(xí)方法。
第三,考前要準(zhǔn)備好自己的資料庫,既要保證內(nèi)容齊全,又要提前“建好索引”,方便用時(shí)檢索;個(gè)人認(rèn)為課程考試前所做的總結(jié)(“Cheatsheet”)是很好的資料。這個(gè)資料庫也可供今后學(xué)習(xí)科研查閱。此外,還要提前熟悉開發(fā)環(huán)境,也可將一些小軟件包帶到考場(chǎng),但要提前測(cè)試兼容性,這也能提高我們配置開發(fā)環(huán)境的能力。