橋杯歷年真題高效刷法:高頻考點(diǎn)與復(fù)盤策略全解析)
每年省賽出分后都能看到同一個(gè)場(chǎng)景有人把近十屆的真題打包下載文件夾命名“藍(lán)橋杯必刷”結(jié)果兩個(gè)月過(guò)去進(jìn)度還停在前三套。這不是懶而是大多數(shù)人根本不知道歷年真題應(yīng)該怎么刷。藍(lán)橋杯的真題集不是用來(lái)刷數(shù)量的題庫(kù)而是一套完整的命題規(guī)律樣本。今天這篇匯總不打算流水賬式地貼幾十道題的答案而是把真題里的高頻考點(diǎn)、復(fù)盤方法和賽場(chǎng)策略一次講透。無(wú)論你是第一次接觸這個(gè)比賽還是已經(jīng)刷完一輪準(zhǔn)備沖國(guó)賽認(rèn)真讀完都能少走很多彎路。1. 為什么說(shuō)歷年真題是藍(lán)橋杯最值得刷的資料1.1 真題和平臺(tái)隨機(jī)刷題完全是兩回事藍(lán)橋杯官方網(wǎng)站有練習(xí)系統(tǒng)里面也有不少往屆題很多人覺(jué)得在系統(tǒng)里隨機(jī)刷就是在刷真題。這是最可惜的誤區(qū)。平臺(tái)題庫(kù)把不同年份、不同難度、不同風(fēng)格的題目混在一起刷起來(lái)像抽卡今天一道簡(jiǎn)單模擬明天一道國(guó)賽壓軸題刷完三百道之后你腦海里的“平均難度”根本代表不了省賽的真實(shí)感受。一套完整真題和隨機(jī)刷題最大的區(qū)別在于它的難度曲線是經(jīng)過(guò)設(shè)計(jì)的。簡(jiǎn)單題、中等題、壓軸題各占多少比例每道題的時(shí)間限制多少測(cè)試數(shù)據(jù)分成幾檔這些都是固定的。只有整套刷你才會(huì)建立起對(duì)這個(gè)比賽“真實(shí)體感”的認(rèn)知。第一年備賽時(shí)我也走過(guò)隨機(jī)刷題的路平臺(tái)記錄顯示刷了三百多道結(jié)果做省賽模擬卷填空全對(duì)編程大題前三道只能拿一半分。后來(lái)改成精刷真題才發(fā)現(xiàn)很多中等題考的是幾個(gè)算法點(diǎn)的組合應(yīng)用隨機(jī)刷題根本碰不到這種組合。從那以后我把題庫(kù)只當(dāng)補(bǔ)充核心材料始終是真題。1.2 題型結(jié)構(gòu)和分值分布決定了你的訓(xùn)練方向近幾屆省賽基本維持十道題前五道是結(jié)果填空后五道是編程大題比賽時(shí)長(zhǎng)四小時(shí)左右。這個(gè)結(jié)構(gòu)非常關(guān)鍵因?yàn)樗苯記Q定了訓(xùn)練方向的優(yōu)先級(jí)。題型常見(jiàn)題量得分特點(diǎn)建議投入時(shí)間結(jié)果填空5題答案唯一要么滿分要么零分每題10分鐘以內(nèi)編程大題5題按測(cè)試點(diǎn)給分有部分分空間每題20到60分鐘結(jié)果填空答案要么對(duì)要么錯(cuò)沒(méi)有中間態(tài)所以必須保證正確率編程大題按測(cè)試點(diǎn)給分跑過(guò)一組得一組的分這就給了“部分得分”的博弈空間。早年比賽還出現(xiàn)過(guò)代碼填空最近幾年已經(jīng)淡出但那種“閱讀并理解他人代碼”的能力沒(méi)有消失——很多大題樣例代碼里依然藏著出題人想給你的提示讀得懂就多一條路。理解這個(gè)結(jié)構(gòu)你就明白為什么真題必須整套刷。只練編程大題體會(huì)不到填空部分的防守壓力只刷填空又掌握不了大題的部分分策略。兩種題型在同一套題里的節(jié)奏切換只能在真題里練。1.3 老題不是沒(méi)用關(guān)鍵看你怎么排優(yōu)先級(jí)常有選手問(wèn)五年前的真題還有參考價(jià)值嗎這里我想把話說(shuō)得直接一點(diǎn)算法題不存在“版本過(guò)期”這回事。全排列、日期計(jì)算、BFS迷宮這類經(jīng)典考點(diǎn)五年后依然會(huì)換個(gè)包裝重新出現(xiàn)在卷子里。老題真正的價(jià)值是讓你看到某個(gè)考點(diǎn)最樸素的原型。比如某年考了一個(gè)簡(jiǎn)單的排列組合計(jì)數(shù)看起來(lái)平平無(wú)奇但過(guò)幾年同一考點(diǎn)的變形題會(huì)出現(xiàn)在編程大題里數(shù)據(jù)范圍變大要求你從枚舉升級(jí)成遞推。沒(méi)有老題打底你可能連它是哪個(gè)考點(diǎn)變出來(lái)的都認(rèn)不出來(lái)。不過(guò)年份確實(shí)影響優(yōu)先級(jí)。建議從近三年倒著往前刷先接觸最近的命題風(fēng)格和難度曲線再往前追老題。這樣你會(huì)發(fā)現(xiàn)很多老題的考點(diǎn)已經(jīng)被新題繼承并且升級(jí)了這種新舊對(duì)照帶來(lái)的理解深度比單純刷數(shù)量高得多。2. 反復(fù)出現(xiàn)在真題里的核心考點(diǎn)與解題思路2.1 暴力枚舉與模擬送分題和保底題的??退{(lán)橋杯的送分題常年由模擬和枚舉承包。日期問(wèn)題、閏年判斷、星期推算、全排列計(jì)數(shù)都是填空中出現(xiàn)頻率極高的場(chǎng)景。這類題難度不大但細(xì)節(jié)陷阱非常多。閏年規(guī)則就是最典型的例子四年一閏百年不閏四百年再閏。這個(gè)規(guī)則只要記錯(cuò)一個(gè)條件答案就直接歸零。枚舉區(qū)間時(shí)還要特別注意題目說(shuō)的是開(kāi)區(qū)間還是閉區(qū)間起點(diǎn)當(dāng)天算不算這些一字之差就決定結(jié)果對(duì)錯(cuò)。暴力枚舉不等于瞎試。寫代碼之前先估算狀態(tài)數(shù)量級(jí)如果枚舉量在1e8以內(nèi)直接三重循環(huán)都沒(méi)問(wèn)題如果超過(guò)1e8就要考慮剪枝或者換思路。有人用全排列函數(shù)遍歷十多個(gè)元素程序跑滿十分鐘沒(méi)有輸出就是因?yàn)闆](méi)算狀態(tài)數(shù)量其實(shí)已經(jīng)爆炸。模擬題的坑則主要在讀題。比賽題目喜歡在故事背景里藏約束條件比如“每件商品最多補(bǔ)貨三次”“倉(cāng)庫(kù)容量上限為20”讀漏一句整個(gè)模型就錯(cuò)了。我的習(xí)慣是把題目搬到草稿紙上把輸入范圍、特殊約束全部圈出來(lái)再開(kāi)始寫循環(huán)磨刀不誤砍柴工。2.2 搜索從DFS/BFS到狀態(tài)壓縮搜索在藍(lán)橋杯高頻榜單里穩(wěn)居前列。經(jīng)典迷宮最短步數(shù)、連通塊計(jì)數(shù)、地圖染色年年都有變種出現(xiàn)。BFS求最短步數(shù)方向數(shù)組和visited數(shù)組是基本功。有個(gè)錯(cuò)誤從基礎(chǔ)題到國(guó)賽題都存在忘記把起點(diǎn)標(biāo)記為已訪問(wèn)導(dǎo)致起點(diǎn)被反復(fù)入隊(duì)最后超時(shí)甚至爆內(nèi)存。寫B(tài)FS時(shí)第一步就是申請(qǐng)隊(duì)列并標(biāo)記起點(diǎn)然后再進(jìn)入循環(huán)這個(gè)順序不要顛倒。DFS要注意的是遞歸深度。藍(lán)橋杯評(píng)測(cè)環(huán)境的棧空間并不寬松遞歸層數(shù)上萬(wàn)就可能爆棧。遇到深度不確定的題目?jī)?yōu)先考慮用顯式棧模擬或者直接換BFS。代碼量會(huì)多一些但不會(huì)掛得莫名其妙。真題里搜索題更高階的考法是狀態(tài)壓縮。一旦題目里出現(xiàn)“狀態(tài)”二字并且涉及的節(jié)點(diǎn)數(shù)不超過(guò)20通常意味著要把整個(gè)局面壓成一個(gè)整數(shù)用一維或二維數(shù)組做判重。比如某些開(kāi)關(guān)問(wèn)題、螞蟻爬行問(wèn)題、棋盤翻轉(zhuǎn)問(wèn)題網(wǎng)格的每個(gè)狀態(tài)都能對(duì)應(yīng)到一個(gè)二進(jìn)制數(shù)。從“標(biāo)記格子”升級(jí)到“標(biāo)記狀態(tài)”是搜索能力的一道分水嶺。剪枝也不能只掛在嘴邊。DFS時(shí)先想三個(gè)問(wèn)題當(dāng)前步數(shù)是否已經(jīng)超過(guò)已知最優(yōu)解是否存在對(duì)稱分支可以砍掉一半搜索量能不能通過(guò)排序讓更有希望的分支先被探索想明白這三件事很多超時(shí)搜索題都能救回來(lái)。2.3 動(dòng)態(tài)規(guī)劃從背包到區(qū)間DP動(dòng)態(tài)規(guī)劃是真正拉開(kāi)分?jǐn)?shù)差距的考點(diǎn)。省賽的DP題不會(huì)考到很偏的模型但出現(xiàn)頻率相當(dāng)高主要集中在這幾類背包、最長(zhǎng)遞增子序列、最長(zhǎng)公共子序列、區(qū)間DP。背包類問(wèn)題出現(xiàn)的頻率尤其高。0-1背包、完全背包、多重背包經(jīng)常換上一層“物資運(yùn)輸”“能量收集”“任務(wù)分配”的包裝但轉(zhuǎn)移方程的內(nèi)核是一致的。準(zhǔn)備階段把最基礎(chǔ)的三種背包模型寫熟省賽大部分背包場(chǎng)景都能覆蓋。區(qū)間DP也有固定的識(shí)別方式。當(dāng)題目里出現(xiàn)“合并相鄰兩堆”“消除連續(xù)顏色”“選擇區(qū)間內(nèi)最優(yōu)分割點(diǎn)”這類表述通常就要定義 dp[i][j] 表示閉區(qū)間內(nèi)的答案再枚舉中間點(diǎn)做轉(zhuǎn)移。這類題復(fù)雜度一般是 O(n^3)看到 n 的范圍在300以內(nèi)大概率就是區(qū)間DP超過(guò)300就要另尋優(yōu)化。我見(jiàn)過(guò)很多選手一看到DP就先慌了狀態(tài)定義不出來(lái)就直接放棄。其實(shí)不用現(xiàn)場(chǎng)發(fā)明狀態(tài)按真題里反復(fù)出現(xiàn)的模型分類準(zhǔn)備就好。如果連該套哪個(gè)模型都判斷不出來(lái)那就寫暴力遞歸拿部分分至少比留空強(qiáng)。暴力能過(guò)小數(shù)據(jù)的測(cè)試點(diǎn)在藍(lán)橋杯的大題評(píng)分里就是實(shí)打?qū)嵉姆謹(jǐn)?shù)。2.4 數(shù)論與組合數(shù)學(xué)年年出現(xiàn)的“老三樣”數(shù)論在藍(lán)橋杯里不算難但勝在年年出現(xiàn)。素?cái)?shù)篩、最大公約數(shù)、最小公倍數(shù)、快速冪、組合數(shù)取模這幾樣是主力。素?cái)?shù)篩掌握埃氏篩和歐拉篩就夠用gcd和lcm直接用標(biāo)準(zhǔn)庫(kù)里的實(shí)現(xiàn)沒(méi)有手寫必要。快速冪則建議直接背模板因?yàn)樗€會(huì)延伸到費(fèi)馬小定理求逆元配合組合數(shù)做取模運(yùn)算省賽國(guó)賽都大概率用得著long long modpow(long long a, long long b, long long p) { long long res 1; a % p; while (b 0) { if (b 1) res res * a % p; a a * a % p; b 1; } return res; }組合數(shù)學(xué)方面卡特蘭數(shù)、錯(cuò)排、隔板法偶爾出現(xiàn)在填空里。別被名字嚇住真題考得都比較淺基本就是套公式的事。如果公式忘了推導(dǎo)又來(lái)不及最實(shí)用的辦法是寫一個(gè)小規(guī)模暴力程序把結(jié)果跑出來(lái)填到答案框里就行。數(shù)論題有個(gè)特點(diǎn)有些填空可以直接靠手算硬枚舉反而容易出錯(cuò)。賽場(chǎng)上草稿紙不是擺設(shè)很多看起來(lái)在考圖形規(guī)律的題實(shí)際是組合計(jì)數(shù)公式動(dòng)筆推一推比寫得飛快更重要。2.5 字符串、數(shù)據(jù)結(jié)構(gòu)與圖論工具字符串算法里KMP是必須掌握的基礎(chǔ)。它代碼量不大但邊界條件多容易出現(xiàn)數(shù)組越界。真題里KMP很少單獨(dú)作為壓軸題更多時(shí)候作為中等題的一個(gè)子步驟出現(xiàn)。字典樹(shù)偶爾出現(xiàn)在前綴統(tǒng)計(jì)相關(guān)的題目里一旦出現(xiàn)就屬于勝負(fù)手沒(méi)準(zhǔn)備過(guò)的人現(xiàn)場(chǎng)基本想不出來(lái)。并查集是另一個(gè)性價(jià)比極高的模板。它的代碼量甚至比KMP更短卻能解決連通性問(wèn)題也是最小生成樹(shù)Kruskal算法的前置技能。真題里經(jīng)常有一道題表面在講城市道路或者朋友關(guān)系實(shí)際就是在問(wèn)連通塊數(shù)量會(huì)并查集就是秒殺不會(huì)就只能干瞪眼。圖論的完整考點(diǎn)在藍(lán)橋杯里不算主角但最小生成樹(shù)和最短路偶爾會(huì)露臉。最小生成樹(shù)掌握Kruskal就行配合并查集復(fù)雜度很穩(wěn)最短路掌握堆優(yōu)化的Dijkstra能覆蓋大部分題目場(chǎng)景。這類題通常包裝精美剝掉外殼就是模板題所以模板一定要練到能默寫的程度。2.6 貪心與排序看似簡(jiǎn)單但是要敢用貪心在省賽里的存在感不低尤其是排序加貪心組合的題目按某個(gè)屬性排序然后順序掃描得到全局最優(yōu)解。區(qū)間調(diào)度問(wèn)題就是最典型的代表按結(jié)束時(shí)間排序貪心選擇不重疊的區(qū)間。貪心的問(wèn)題是解法往往極短但正確性證明很繞所以很多題解只寫一句“顯然”。考場(chǎng)上心里沒(méi)底怎么辦我推薦一個(gè)小數(shù)據(jù)對(duì)拍法隨機(jī)生成幾百組小規(guī)模數(shù)據(jù)用貪心算法和暴力搜索各跑一遍結(jié)果一致就大概率沒(méi)錯(cuò)。這個(gè)驗(yàn)證方式不需要什么工具本地寫兩個(gè)函數(shù)就能搞定。如果你在一道題上逐漸想出“每次選最大/最早/最少的那個(gè)”的思路先別急著寫碼花兩分鐘想一想有沒(méi)有反例。想不出反例再上對(duì)拍驗(yàn)證。藍(lán)橋杯的貪心題難度不算極端但敢不敢用、會(huì)不會(huì)驗(yàn)證是很多人丟分的分水嶺。3. 一道真題怎么才算真正吃透3.1 四步復(fù)盤法從限時(shí)思考到重新復(fù)現(xiàn)很多人刷真題的方式是打開(kāi)題目看一眼不會(huì)直接翻答案覺(jué)得“原來(lái)如此”然后關(guān)上下一題。這種刷法刷一百道也沒(méi)有用因?yàn)榇竽X全程沒(méi)有完成從讀題到建模的關(guān)鍵思考。我習(xí)慣把一道真題拆成四步處理。第一步限時(shí)獨(dú)立思考。填空15分鐘大題40分鐘時(shí)間一到無(wú)論做沒(méi)做出來(lái)都停。想不出來(lái)也沒(méi)關(guān)系這個(gè)卡住的位置恰恰是這道題對(duì)你的最大價(jià)值。第二步對(duì)照解析。逐行讀官方題解或高質(zhì)量解析重點(diǎn)看它的切入點(diǎn)在哪里而不是急著抄代碼。第三步關(guān)掉解析自己重新寫一遍。這一步能寫出來(lái)才算真正理解了思路。第四步把題記進(jìn)題單標(biāo)出考點(diǎn)、錯(cuò)誤原因和復(fù)寫狀態(tài)??雌饋?lái)繁瑣但每道題過(guò)這一遍勝過(guò)囫圇掃十道。特別是“限時(shí)思考”這一條它是所有環(huán)節(jié)的核心只有經(jīng)歷從0到1的探索過(guò)程你才能在考場(chǎng)上再現(xiàn)這條路徑。3.2 題單不要做成收藏夾刷真題一定要有題單但題單不是把題目名字抄一遍就完了。我見(jiàn)過(guò)很多人的題單就是一行行題目列表后面跟著一個(gè)“√”看起來(lái)很有成就感實(shí)際對(duì)能力提升毫無(wú)幫助。合格的題單應(yīng)該包含這些字段字段填寫內(nèi)容題目出處年份、組別、題號(hào)核心考點(diǎn)枚舉、DP、數(shù)論、搜索等我的解法考場(chǎng)上寫出來(lái)的真實(shí)思路標(biāo)答思路解析里更優(yōu)的解法卡住原因具體在哪個(gè)環(huán)節(jié)想不動(dòng)了復(fù)寫狀態(tài)是否在幾天后獨(dú)立復(fù)寫通過(guò)這個(gè)模板的重點(diǎn)是“卡住原因”和“復(fù)寫狀態(tài)”兩欄。前者逼你回顧思維斷點(diǎn)后者逼你對(duì)抗遺忘。填的時(shí)候要誠(chéng)實(shí)寫不出就是寫不出只有承認(rèn)問(wèn)題才能在下一次刷題時(shí)有意識(shí)地改。因?yàn)樽约菏莻淇嫉娜瞬皇墙o老師交作業(yè)題單做得再漂亮對(duì)自己沒(méi)幫助就是廢紙。誠(chéng)實(shí)記錄錯(cuò)誤原因比記錄“Accepted”重要得多。3.3 解析看到什么程度才算完判斷一道題是否真正吃透有三個(gè)問(wèn)題可以問(wèn)自己第一為什么這個(gè)狀態(tài)轉(zhuǎn)移是對(duì)的換成另一個(gè)狀態(tài)定義為什么不行第二這個(gè)復(fù)雜度為什么能過(guò)如果數(shù)據(jù)范圍翻十倍解法要怎么升級(jí)第三如果改掉題目里的一個(gè)條件這道題會(huì)變成什么考點(diǎn)三個(gè)問(wèn)題都能答上來(lái)說(shuō)明你真的吸收了。只要有一個(gè)答不上來(lái)這道題就沒(méi)有結(jié)束應(yīng)該把答案弄明白再走。很多人刷真題只是“掃過(guò)”而不是“吃過(guò)”到了考場(chǎng)上題目稍微包裝一下就不認(rèn)得了根因就在這里。復(fù)寫的時(shí)候也別只追求“過(guò)題”。藍(lán)橋杯的評(píng)測(cè)系統(tǒng)是對(duì)全部測(cè)試數(shù)據(jù)跑分部分通過(guò)也能得分。所以你復(fù)寫一次只要分?jǐn)?shù)比第一次高就是實(shí)實(shí)在在的進(jìn)步。不需要每次都急著看標(biāo)答給自己的進(jìn)步留一點(diǎn)空間。4. 從真題到賽場(chǎng)目標(biāo)拆解、時(shí)間分配與摸分方法4.1 不同獲獎(jiǎng)目標(biāo)對(duì)應(yīng)不同的刷題重點(diǎn)藍(lán)橋杯備賽最忌諱的一件事就是用同一種方式對(duì)待所有目標(biāo)。目標(biāo)和刷法必須匹配。如果目標(biāo)是省二及以下重點(diǎn)放在填空題全對(duì)加上編程大題前兩三道題穩(wěn)定拿分。這個(gè)階段不需要碰難題把基礎(chǔ)模板寫熟、把細(xì)節(jié)摳住正確率比數(shù)量重要。如果目標(biāo)是省一除了前面提到的要能穩(wěn)定寫出中等難度的DP和搜索題并且開(kāi)始注意輸出格式、邊界條件這些細(xì)節(jié)。如果目標(biāo)是國(guó)獎(jiǎng)那近五年真題要完整刷完同時(shí)補(bǔ)練部分省賽不考但國(guó)賽會(huì)出現(xiàn)的模型比如更復(fù)雜的狀態(tài)壓縮、樹(shù)形DP以及難題的部分分拆解能力。還有一個(gè)很容易犯的誤區(qū)不看組別亂刷真題。藍(lán)橋杯分為研究生組、大學(xué)A組、大學(xué)B組、大學(xué)C組難度依次下降尤其本科B組是絕大多數(shù)人所在的組別備考時(shí)一定要先刷自己組別的真題。別拿研究生組的壓軸題當(dāng)入門題練心態(tài)很容易崩練出來(lái)的方向也有偏差。4.2 四小時(shí)賽程里時(shí)間應(yīng)該怎么分配以常見(jiàn)的省賽時(shí)長(zhǎng)4小時(shí)左右和10道題為例比較穩(wěn)的節(jié)奏是前40到50分鐘集中解決結(jié)果填空題中間90分鐘攻自己最熟悉的3道編程大題最后剩余時(shí)間掃蕩剩下的題目。前段的填空題要特別注意“復(fù)查”。因?yàn)樘羁仗铄e(cuò)就是零分沒(méi)有過(guò)程分所以做題時(shí)必須在草稿紙上保留清晰的推導(dǎo)過(guò)程。做完前五題后回頭快速驗(yàn)證一遍答案尤其是日期、排列計(jì)數(shù)這類容易出錯(cuò)細(xì)節(jié)的題多花五分鐘復(fù)查比多做一道難題有價(jià)值。很容易犯的一個(gè)錯(cuò)是死磕一道編程大題。如果一道題想了半小時(shí)還沒(méi)有思路果斷換題把會(huì)做的題全部拿到分之后再回頭啃硬骨頭。真題的難度是曲線上升的卷面順序不等于最優(yōu)答題順序。4.3 部分分與摸分策略暴力不是恥辱藍(lán)橋杯編程大題最友好的地方就是按測(cè)試點(diǎn)給分。這意味著你不需要完整解答一道題也能拿到一部分分?jǐn)?shù)。一個(gè)非常實(shí)用的判斷標(biāo)準(zhǔn)是看數(shù)據(jù)范圍n 不超過(guò)10大膽深搜枚舉n 不超過(guò)20考慮狀態(tài)壓縮枚舉n 在2000左右往 O(n^2) 的DP上想n 到1e5基本就鎖定排序、二分或者線性做法。這個(gè)粗暴的經(jīng)驗(yàn)不是萬(wàn)能的但能幫你快速判斷一道題值得投入多少時(shí)間。還有一類“打表法”非常適合填空和某些特殊規(guī)律題先用本地程序枚舉大量小數(shù)據(jù)觀察輸出規(guī)律找到遞推公式或者查找表直接把結(jié)果寫進(jìn)代碼里。很多看起來(lái)無(wú)從下手的題本質(zhì)上都能靠打表找到突破口。大題的暴力解法同樣重要。就算你知道正解是DP但是狀態(tài)定義想不出來(lái)也要先把暴力遞歸寫上前幾個(gè)小數(shù)據(jù)測(cè)試點(diǎn)的分就是你的保底分。藍(lán)橋杯的測(cè)試數(shù)據(jù)通常分好幾檔最小的那檔就是專門給暴力選手留的把能拿的分都拿了比死磕正解理智得多。4.4 提交環(huán)節(jié)最容易忽略的隱蔽細(xì)節(jié)程序?qū)憣?duì)了最后掛在提交環(huán)節(jié)是很多人的真實(shí)經(jīng)歷。第一個(gè)坑是輸出格式。題目要求輸出 Yes/No輸出成 YES/NO直接零分要求保留兩位小數(shù)printf 里寫成 .1f也是零分。還有多組數(shù)據(jù)之間的換行少換一行同樣可能被判錯(cuò)。這些細(xì)節(jié)在讀題階段就要圈出來(lái)寫完代碼再對(duì)照一次。第二個(gè)坑是數(shù)據(jù)類型。所有涉及累加、乘法、階乘的題先想 long long 夠不夠。比賽場(chǎng)景里因?yàn)?int 溢出導(dǎo)致滿盤皆輸?shù)睦用磕甓加小H∧_\(yùn)算也容易出問(wèn)題減法取模時(shí)先加上模數(shù)再取模不然可能出現(xiàn)負(fù)數(shù)結(jié)果。第三個(gè)坑是語(yǔ)言標(biāo)準(zhǔn)。藍(lán)橋杯評(píng)測(cè)環(huán)境對(duì)語(yǔ)言版本有固定要求C 代碼不要用太新特性的寫法比如某些編譯版本不支持的語(yǔ)法寫得再優(yōu)雅也沒(méi)用。比賽前最好在官方指定版本的編譯環(huán)境下把代碼跑一遍確保模板、頭文件、命名空間都兼容。5. 刷歷年真題時(shí)最容易踩的坑5.1 看得懂題解合上書就不會(huì)寫這是最普遍的問(wèn)題而且它非常正常??吹枚馕稣f(shuō)明你處于“識(shí)別解法”的階段合上書寫不出來(lái)說(shuō)明你還沒(méi)有把解法內(nèi)化成自己的東西。這中間缺的不是智商而是輸出訓(xùn)練。破解方法只有一個(gè)24小時(shí)后什么都不看獨(dú)立復(fù)寫一遍。如果復(fù)寫不出來(lái)就定位到具體卡住的那一步比方說(shuō)狀態(tài)轉(zhuǎn)移方程寫錯(cuò)了、邊界條件想漏了、遞歸的終止條件設(shè)錯(cuò)了把卡點(diǎn)記錄在題單里。同一道題隔幾天寫一遍連續(xù)三輪之后這個(gè)解法才算真正長(zhǎng)在你腦子里。5.2 總在舒適區(qū)里刷題刷一百道等于刷十道人天然傾向于刷自己會(huì)做的題每天刷完感覺(jué)很充實(shí)。但比賽不考“你會(huì)的”它考“它出的”。如果真題里你總是挑枚舉、模擬這些簡(jiǎn)單題練中等難度的DP就一直不會(huì)到了考場(chǎng)照舊卡殼。我的建議是每次復(fù)盤至少挑一道卡了半小時(shí)以上的難題。哪怕最后只看解析那種被卡住的感覺(jué)也會(huì)在腦海里留下痕跡。刷真題的效率不在于總題數(shù)而在于你越過(guò)多少道自己的坎。5.3 填空把死磕當(dāng)成光榮很多選手做結(jié)果填空的時(shí)候也要用“標(biāo)準(zhǔn)解法”把它解出來(lái)好像不這樣就不專業(yè)。實(shí)際上填空題只需要答案不需要提交代碼這意味著你有極大的自由度可以寫一個(gè)最笨的暴力程序去跑可以拿紙筆手推公式甚至可以用一些非常規(guī)手段只要結(jié)果對(duì)就行。這種自由度在備賽時(shí)也要練。做填空時(shí)先判斷能不能用枚舉、打表、規(guī)律查找這些“非正規(guī)”手段如果小規(guī)模暴力程序能在10秒內(nèi)出結(jié)果就直接跑不要浪費(fèi)時(shí)間在優(yōu)化算法上??紙?chǎng)四小時(shí)寶貴為填空題做正規(guī)算法設(shè)計(jì)是不劃算的。5.4 臨場(chǎng)換語(yǔ)言是最虧的操作有不少選手報(bào)名時(shí)選了C備賽中期換Java臨考前又覺(jué)得Python寫起來(lái)快臨時(shí)改主意。語(yǔ)言本身沒(méi)有絕對(duì)的高下但每種語(yǔ)言在藍(lán)橋杯環(huán)境下都有自己的節(jié)奏C運(yùn)行速度快模板全面Java代碼量大一些但集合類豐富Python代碼簡(jiǎn)潔但大循環(huán)時(shí)容易超時(shí)。選擇語(yǔ)言的核心標(biāo)準(zhǔn)只有一個(gè)備賽階段你就用它刷真題用它跑完至少最近三年的卷子。如果臨近比賽才換語(yǔ)言意味著你對(duì)輸出格式、模板細(xì)節(jié)、時(shí)間限制的把握全部歸零前面刷過(guò)的題都要重新適應(yīng)當(dāng)前的語(yǔ)言特性。這是純虧本的買賣千萬(wàn)別做。5.5 常見(jiàn)問(wèn)題速查表現(xiàn)象可能原因解決方向本地運(yùn)行正常提交后0分?jǐn)?shù)組越界、未初始化、類名或文件名不符檢查邊界和命名要求重新編譯暴力超時(shí)狀態(tài)量過(guò)大看數(shù)據(jù)范圍換算法或者做剪枝DP狀態(tài)定義不出來(lái)對(duì)模型不熟悉先寫暴力遞歸拿部分分結(jié)果填空算錯(cuò)細(xì)節(jié)漏條件換一種方法交叉驗(yàn)證遞歸爆棧深度超過(guò)評(píng)測(cè)棧限制改BFS或用顯式棧取模結(jié)果出現(xiàn)負(fù)數(shù)減法之前沒(méi)有加模數(shù)先加模數(shù)再取模這張表值得在比賽前一天拿出來(lái)看一遍。每一個(gè)問(wèn)題都是很多人用比賽成績(jī)換來(lái)的教訓(xùn)提前避開(kāi)比考場(chǎng)上臨時(shí)排查劃算得多。最后說(shuō)一個(gè)我自己的小習(xí)慣。每做完一套真題我會(huì)在題單的第一行寫一句話這套題里有沒(méi)有哪個(gè)瞬間讓我覺(jué)得“原來(lái)還能這么想”。半年之后再回頭看那些曾經(jīng)卡住我的“原來(lái)瞬間”就是我對(duì)藍(lán)橋杯命題規(guī)律最真實(shí)的體感。歷年真題的價(jià)值從來(lái)不在題目本身而在從你身上逼出來(lái)的那套應(yīng)對(duì)新題的思維。刷完一套不是結(jié)束能在賽場(chǎng)上認(rèn)出題目?jī)?nèi)核才是真正的收獲。