哈工大丁文濤:CCSP不只是算法競賽|CCSP金獎?wù)f
哈爾濱工業(yè)大學丁文濤在2024 CCF CCSP競賽中獲得金獎,每年CSP高分考生(200分及以上)均可報名參加CCSP競賽。第36次CSP認證考試將于12月8日舉辦,報名正在進行中。CCF不定期邀請CSP高分和CCSP獲獎選手分享經(jīng)驗,希望能夠幫助同學們?nèi)〉酶蟮倪M步。
非常歡迎更多CSP優(yōu)秀學子分享自己的寶貴經(jīng)驗,聯(lián)系:csp@ccf.org.cn
算法競賽緣起
我來自競賽強省江蘇省下設(shè)的競賽弱市揚州市。接觸算法競賽純粹基于偶然——初中校本課程本著玩電腦的心態(tài)選中了信息學奧賽,此番命中注定改變了我接下來的人生走向。我初一才開始學習算法競賽,依賴于省內(nèi)其他高校組織的集訓(xùn),以及各種在線競賽平臺提供的公開資源。因為資源匱乏,且并不十分重視競賽的學習,跌跌撞撞直到初三才混到了NOIP 2018普及組一等獎,實在說不上有水平。
在接下來的幾年里,算法競賽圈發(fā)生了諸多劇變。2019年NOIP因特殊原因宣布取消,取而代之的是CSP-J/S認證;2020年NOIP宣布重啟,賽制發(fā)生重大改變,原先兩天六題共600分的格局轉(zhuǎn)變?yōu)槿缃馛SP-S 選拔、NOIP考核一天四題共400分的格局,同時普及組被剝離NOIP(因此我參加的NOIP2018普及組相當于最后一屆“普及組”)。同期爆發(fā)的新冠疫情也對競賽進程產(chǎn)生諸多影響,如Winter Camp改為線上、特殊時期誕生的競賽NOI Online。此外,2019年前后推出的強基計劃改變了原先依賴競賽自主招生的格局,對信息學競賽事業(yè)的發(fā)展產(chǎn)生猛烈沖擊,許多選手在此期間選擇放棄了競賽學習,轉(zhuǎn)而投入到了文化課的學習中。
然而,經(jīng)歷如此劇變,我對算法競賽的熱愛不減。我于2019年參加 CSP-S提高組僥幸獲得一等獎,于2020年參加NOIP以及省選遺憾未能進入江蘇省省隊,以非正式選手的身份參加了NOI2021并獲銀牌分數(shù)線。
OI生涯所獲獎項
回顧我算法競賽生涯的前半生,其中的點點滴滴滿是驚喜與遺憾,其中的軌跡更是烙上了時代印記。這段經(jīng)歷為我?guī)砹藢氋F的財富,讓我接觸到了獨特的算法競賽的魅力。
大學時期的我熱愛不減,參加了多項算法競賽相關(guān)比賽。因此,我也參加了專業(yè)級CSP,以及其對應(yīng)的全國決賽CCSP。
參賽經(jīng)歷
此次CCSP在浙江金華舉辦,來自不同學校的選手在此共襄盛舉。有幸能在這里與眾多選手切磋,我倍感榮幸。賽前,我見到了許多熟悉的算法競賽選手:
圖中是算法競賽圈知名選手小粉兔,他正在向眾人展示冰紅茶。小粉兔曾獲得NOI2020金牌第51名并進入清華大學就讀,他在此次CCSP中榮獲銅獎第一名。
在比賽之前我就得知,CCSP除了考察基本的算法之外還側(cè)重于工程類代碼的實現(xiàn),強調(diào)選手閱讀較長題面并根據(jù)要求實現(xiàn)相應(yīng)代碼的能力。為此我對歷年試題做了大概了解,對出題風格有一定的把握。
開場五分鐘,我猜測出題人的意圖很快切掉了第一題簽到題。第二題的題面略長,并且操作繁多,看上去是一個數(shù)據(jù)結(jié)構(gòu)題。但根據(jù)我的經(jīng)驗,以及題面上保證數(shù)據(jù)隨機的提示,猜測本題可能是考察選手使用暴力策略實現(xiàn)基本操作的功夫,于是我也在很快時間內(nèi)通過了第二題,此時比賽開局半個小時。在接下來的一個多小時里,我觀察了一下第三題的操作,覺得沒有太多想法,在觀察到題意可以轉(zhuǎn)化為帶修查詢區(qū)間顏色數(shù)后,使用了帶修莫隊做法過了題目。此時距離比賽開始時間一小時五十分鐘。
前三題AC記錄的截圖
休息片刻,在接下來很長的一段時間里,我嘗試編寫第四道題的代碼。由于工程題題面的長度較長,且需要支持的操作較多,理解不同操作的行為以及相互關(guān)系花費了我較長的時間。長時間的作戰(zhàn)讓我感到體力不支,這是第一次參與長達十二個小時的比賽。盡管遭遇了一些困難,隨著題目功能需求的實現(xiàn)、程序bug的修復(fù),提交記錄的得分呈現(xiàn)上升趨勢,最終我在15:45左右通過了本題。
吃完晚飯,午后不振的精神狀態(tài)得到少許恢復(fù)。在接下來的時間里我嘗試編寫最后一條題目的代碼。然而或許是我對題目的理解出了問題,拼盡全力無法戰(zhàn)勝,最終在此題獲得了80分。
此次比賽的結(jié)果并不讓我感到特別意外,基本上在預(yù)期范圍內(nèi)。我是學校校隊里比較擅長寫代碼的選手,相對熟悉各種算法的編寫以及應(yīng)用;同時我參與過諸如網(wǎng)絡(luò)公開賽籌備、項目參與等工作,對長代碼的編寫有一定的經(jīng)驗,因此有一定的信心。盡管此次最終未能取得滿分的成績,但此次旅途依然讓我感到十分高興。
CCSP獲獎證書(CCSP2024期間,有幸遇到NOI主席杜子德先生,特意請他在我的證書上額外簽名,他給我們這代選手留下了很多回憶,我很欽佩杜子德先生所做的競賽相關(guān)工作。)
備賽策略
參加CCSP的選手有很多具有競賽背景,在算法競賽領(lǐng)域取得過一定的成績。不過作為一門與算法競賽不完全相同的競賽,CCSP依然值得進行關(guān)注。為此我提出的幾點備賽策略能夠幫助到即將參加CCSP或者CSP的選手。
1、利用網(wǎng)絡(luò)資源
圖中為tiger2005主持編寫的開源競賽工具CCHv2。他很擅長工程類代碼的編寫,并在此次CCSP中榮獲第九名。
各種在線算法平臺提供的競賽試題以及評測服務(wù),為有志于參加算法競賽的選手提供了優(yōu)質(zhì)的競賽資源,選手可利用題庫資源、題解資源、社區(qū)資源等提高自己的算法競賽水平。
某在線評測平臺的截圖(有很多算法競賽選手在上面擔任題庫管理員無償服務(wù)用戶,比如參加此次CCSP的選手Studying Father,他同時入選了2025年度CSP代言人。)
2、溝通交流學習
由于CCSP允許選手自帶U盤攜帶離線資料,因此準備相應(yīng)的參考資料也是備賽的重要一環(huán)。除了可以自己制作算法模板以外,也可以參考其他選手制作的算法模板,做到萬無一失。
3、增強代碼能力
此外,對于較長的代碼,調(diào)試工作也是重要的一環(huán)。在Linux下可用的調(diào)試工具有g(shù)db等,也可以利用CMake等工具組織代碼,盡量保持代碼結(jié)構(gòu)清晰。參賽選手可以在備賽時提前熟悉操作系統(tǒng)以及競賽環(huán)境,并且嘗試使用工具提高效率輔助自己代碼的編寫。
不只是算法競賽
在過去幾十年以來,中國的計算機領(lǐng)域得到了長足發(fā)展。得益于各種公開算法競賽相關(guān)賽事的普及,比如CCF舉辦的非專業(yè)級以及專業(yè)級CSP認證,當下有越來越多的年輕學生也參與到了計算機事業(yè)中去。從某種意義上來講,我這種早已不再參與中學生信息學奧林匹克競賽的選手已經(jīng)可以被稱為“算法競賽老人”了。隨著算法競賽的快速發(fā)展,在過去很新穎的技術(shù)最終也會得到普及,相比于考察對進階/冷門算法的掌握,當下算法競賽更多的是考察選手的思維能力。
然而,算法競賽對于我的陪伴并不會隨著我年齡的增長而逐漸老去。我選擇了算法競賽這條道路,算法競賽施加于我的影響也會陪伴我一輩子。受算法競賽的影響,我選擇了計算機科學與技術(shù)這個專業(yè),并且確實喜愛計算機編程,喜愛基于大家的熱情建立起來的計算機開源社區(qū)。在這里接觸到的技術(shù)允許我實現(xiàn)各種不可思議的事情。在算法競賽以外,我可以嘗試學習前后端技術(shù)編寫網(wǎng)頁,也可以嘗試一些我從未接觸過的領(lǐng)域如網(wǎng)絡(luò)攻防(CTF)等。
我自知不是天賦型選手,受限于小城市以及自身思維能力的局限性,我可能注定無法像一些選手一樣解出十分復(fù)雜的題目取得十分高的成就,也無法通過理論創(chuàng)新貢獻出當前學術(shù)界尚未解決問題(Open Problem)的解答。盡管如此,有一分熱,發(fā)一分光,我希望盡我所能做出貢獻。
某在線比賽平臺的比賽分截圖(圖中排名第一位的是傳奇算法競賽選手周康陽,他作為中國隊的一員出征國際信息學奧林匹克競賽(IOI2024)并取得了全場唯一滿分的驚人成績;圖中排名第三位的是知名算法競賽選手滴叉,他很可愛。)
最后,祝大家在下一屆CCSP中取得理想的成績!