
信息學競賽圈的九月注定是被CSP-J刷屏的一個月。2025年的CSP-J初賽再次毫無懸念地成為編程教育圈、家長群和各大OJ討論區(qū)的熱門話題。作為初中生信息學競賽的“第一道門檻”這套題既承擔著篩選功能也承擔著風向標功能——命題人想看到什么樣的選手、未來復賽會往哪個方向出題全藏在這張卷子里。我今年帶的學生考完出來反應兩極分化得很明顯有人說“穩(wěn)了”選擇題基本秒殺也有人出來就蔫了說閱讀程序題完全看不懂在干什么。等估分結果出來差距基本都拉在閱讀程序題和完善程序題上。這幾乎是每年初賽的保留節(jié)目但2025年的題目在信息量密度和算法思維深度上確實又往上走了一個臺階。這篇文章我會結合2025年CSP-J初賽的整體命題趨勢把各個題型的核心考點、典型真題的解題思路、常見的丟分陷阱全部拆開講清楚。無論你是剛入門準備明年參賽的選手還是已經考完正在準備復賽這篇內容都能幫你把初賽的底層邏輯理順。1. 2025年CSP-J初賽整體格局與關鍵變化1.1 為什么這場初賽比往年更值得復盤先說一個最直觀的感受2025年的初賽記憶性題目的占比進一步壓縮理解性題目的占比進一步提高。前幾年的卷子里還有一些“背下來就能得分”的題目比如某個排序算法的平均時間復雜度是多少、某條指令對應的二進制編碼是什么。但2025年的選擇題里這類題目幾乎絕跡了取而代之的是大量“給你一段代碼問你輸出是什么”以及“給你一個場景讓你判斷用什么數(shù)據(jù)結構更合適”的題目。這意味著什么意味著靠考前突擊背知識點的復習策略已經徹底失效了。命題組釋放的信號非常明確初賽不再只是復賽的“資格賽”它本身就是一場獨立的、考察真實編程素養(yǎng)的考試。你光知道棧是“后進先出”沒用你得能在代碼里認出棧的壓入和彈出發(fā)生在哪里你光知道快速排序是O(n log n)沒用你得能手動模擬一趟劃分過程算出某個特定序列經過一次Partition之后長什么樣。從參賽人數(shù)來看2025年CSP-J的報名規(guī)模又創(chuàng)了新高。我所在的省份今年初賽考點增加了兩個依然有大批選手被調劑到較遠的考場。競爭烈度逐年上升初賽分數(shù)線也隨之水漲船高。很多省份的晉級分數(shù)線已經逼近70分這意味著你不僅要做對大部分選擇題閱讀程序題和完善程序題也不能有大的閃失。在這種背景下靠“感覺”做題是完全行不通的每一類題型都需要建立系統(tǒng)性的解題框架。1.2 考試流程與時間線復盤按照CCF往年的節(jié)奏CSP-J的報名通常在暑假開啟初賽安排在9月的第三個周末。2025年也不例外??荚囆问揭廊皇枪P試時長兩小時滿分100分。題型結構保持穩(wěn)定單項選擇15題每題2分共30分閱讀程序題3大題每題約12分共40分左右完善程序題2大題每題約15分共30分左右。不過具體分值分布每年會微調2025年的總體結構是選擇題30分閱讀程序題40分完善程序題30分。兩小時的時間分配非常關鍵。根據(jù)我這些年的觀察選擇題部分建議控制在25分鐘內。很多選手喜歡在選擇題上反復糾結總覺得再想想就能想出來。實際上選擇題的分值就2分一道與其耗時4分鐘去磨一道不確定的題不如先跳過把時間留給后面的程序大題。閱讀程序題才是真正決定你能不能晉級的核心建議分配55到60分鐘。完善程序題雖然分值高但很多空格的提示信息其實藏在上下文里你一旦理解了算法的整體框架填起來反而比閱讀程序題更順。最怕的就是時間分配倒掛——選擇題磨了40分鐘導致后面兩大題只能草草收場這是每年最常見的戰(zhàn)略性失誤。2. 初賽題型深度拆解每一分都丟在哪里2.1 單項選擇題從“記憶題”到“閱讀題”的轉變2025年的選擇題我拿到手的第一反應是題干變長了。以前的題目一句話就能說清楚現(xiàn)在的題面往往給你一小段背景描述再給一段代碼片段或者一個數(shù)據(jù)結構的操作序列然后才問輸出結果或者算法復雜度。這對閱讀速度和信息提取能力提出了更高的要求。舉一個典型的例子今年考了一道關于異或運算的選擇題本質上就是考察a ^ a 0、a ^ 0 a這兩個基本性質。但命題人沒有直接問“異或運算的性質是什么”而是給了一段循環(huán)代碼讓你判斷最終輸出結果。如果你對異或運算的性質足夠敏感一眼就能看出來很多變量是來干擾你的真正參與運算的部分可以化簡。這就是現(xiàn)在選擇題的命題風格——知識點還是那個知識點但包裝換了你認不出來就是丟分。還有一個明顯的趨勢是數(shù)學類題目在增加。整除、取余、質數(shù)判斷、最大公約數(shù)、排列組合這些內容在2025年的選擇題里至少出現(xiàn)了4到5道。信息學競賽的底層是數(shù)學初賽也正在越來越重視這一塊。備考選擇題不能只盯著編程語言語法和數(shù)據(jù)結構數(shù)學基礎必須同步補強尤其是數(shù)論入門里的同余、整除、質因數(shù)分解這些概念。2.2 閱讀程序題2025年最核心的拉分項閱讀程序題是很多選手的噩夢但它其實是三種題型里最有規(guī)律可循的。2025年的三篇閱讀程序題一篇是純模擬題考察你對循環(huán)和數(shù)組下標的敏感度一篇是遞歸與二叉樹遍歷結合需要你手動模擬遞歸過程還有一篇涉及貪心策略考察你對算法正確性的理解。先說純模擬題。這種題沒有高深的算法就是老老實實順著代碼走一遍。但它有一個致命的陷阱代碼里通常會有很多“障眼法”變量——有些變量從頭到尾沒被使用有些變量只在某個分支里出現(xiàn)。如果你逐行跟蹤所有變量很快就會亂掉。我的建議是拿到代碼先不急著模擬花1分鐘做兩件事第一找出程序的主要輸入是什么、主要輸出是什么第二忽略掉對輸出沒有貢獻的變量。這兩步做完再開始跟蹤關鍵變量的變化軌跡效率會高很多。再說遞歸與二叉樹遍歷。2025年考到的這個題本質上是給你一個二叉樹的前序遍歷和中序遍歷要求你推出后序遍歷。這個知識點在復賽里也經常出現(xiàn)屬于必須掌握的基礎中的基礎。做題時我建議直接畫出遞歸展開圖把每一層遞歸的輸入區(qū)間寫清楚左子樹的范圍、右子樹的范圍、根節(jié)點的位置一目了然。很多選手丟分不是因為不懂遞歸而是因為只在腦子里模擬遞歸沒有在草稿紙上畫出來結果繞暈了。初賽是筆試草稿紙就是你的武器用好了能解決70%的思維混亂問題。最后是貪心策略題。這類題不會要求你證明貪心正確性但會問你“如果將某個判斷條件改成……結果會怎樣”或者“這段代碼實現(xiàn)的是什么功能”。想在短時間內讀懂一個貪心算法的正確性最有效的方法是小數(shù)據(jù)量代入。把自己當作測試用例準備一組極端的輸入比如全0序列、全1序列、遞增序列、遞減序列手動走一遍代碼看它的行為是否符合你的直覺。這比盯著代碼干想要可靠得多。2.3 完善程序題填空背后的算法思維完善程序題給你一段寫了一半的代碼讓你補全空缺的部分。2025年的兩道完善程序題一題是排序算法的變種——基于歸并思想求逆序對數(shù)量另一題是圖論中的連通性問題本質上是對并查集應用的考察。很多選手有個誤區(qū)覺得完善程序題是“玄學”只能靠蒙。其實完全不是。完善程序題通常有非常明顯的線索可循。第一觀察空格的上下文看這個變量在之前是否出現(xiàn)過如果出現(xiàn)過那這個空格大概率是更新或使用這個變量。第二看循環(huán)的邊界條件這是最容易設置陷阱的地方也是命題人最想考察的地方——你是否理解循環(huán)不變式。第三看函數(shù)的返回值倒推最后一個空格通常填什么。以逆序對這個題來說它的核心思想是歸并排序的過程中當右邊的數(shù)被放入臨時數(shù)組時左邊剩余數(shù)的個數(shù)就是當前這個數(shù)能形成的逆序對數(shù)量。理解了這個核心邏輯空格就好填了——無非就是累加計數(shù)器以及確定遞歸調用的邊界。但如果你不理解這個算法看到那一堆遞歸調用和左右指針的移動就會徹底懵掉。所以完善程序題拼的不是“語法填空”而是你對整個算法流程的宏觀理解。考前刷題時遇到一道完善程序題不要直接看答案先自己把算法的作用是什么、用什么數(shù)據(jù)結構、時間復雜度是多少這三點寫下來再去做題正確率會有質的提升。3. 2025年核心知識點精講與真題解析示范3.1 進制轉換與位運算必考且容易出錯的考點進制轉換和位運算是CSP-J初賽每年必考的內容2025年同樣沒有缺席。這個知識點為什么重要因為計算機底層就是用二進制工作的理解進制轉換和位運算就是理解計算機的思維模式。先看進制轉換。二進制、八進制、十六進制之間的互轉可以用一個“分組法”快速完成二進制轉八進制從右往左每三位一組二進制轉十六進制從右往左每四位一組。做題時我建議一律先把非十進制的數(shù)轉成二進制再在二進制層面做運算最后再轉回目標進制。這種做法的好處是能統(tǒng)一處理不容易出錯。舉個例子十六進制的0xF5轉二進制每位十六進制對應四位二進制F對應11115對應0101所以結果是11110101。這個過程只要熟記0到F對應的四位二進制就夠了。再講位運算。位運算總共六種與、或|、異或^、取反~、左移、右移。2025年熱搜里那個“異或和”的討論度很高就是因為這類問題又經典又容易出錯。異或運算的本質是“無進位加法”兩個關鍵性質是歸零律a ^ a 0和恒等律a ^ 0 a。還有一個常用技巧交換兩個變量a和b不用臨時變量三步異或搞定——a a ^ b; b a ^ b; a a ^ b。這個技巧在閱讀程序題里出現(xiàn)過不止一次認不出來就硬算浪費大量時間。左移右移也要重點掌握。左移n位相當于乘以2的n次方右移n位相當于整除2的n次方。特別注意右移有兩種邏輯右移高位補0和算術右移高位補符號位。C里對無符號整數(shù)做右移是邏輯右移對有符號整數(shù)做右移大多數(shù)編譯器實現(xiàn)的是算術右移。初賽題目有時候會在這個細節(jié)上做文章如果你沒注意到變量類型是int還是unsigned int很容易判斷錯輸出結果。3.2 鏈表、棧與隊列數(shù)據(jù)結構基礎的經典考法數(shù)據(jù)結構基礎是初賽的另一個必考板塊。2025年的題目里鏈表和棧隊列相關的內容至少考了4處分散在選擇題和閱讀程序題中。樹和圖的定義、遍歷方式也都有涉及。鏈表這個考點最常見的就是給你一段插入、刪除節(jié)點的代碼問你某個節(jié)點的指針指向哪里。做這類題有一個笨但極有效的方法畫圖。把鏈表畫成一排方框用箭頭表示指針每次操作都真實地畫出新的箭頭方向。只要圖畫清楚了指針操作怎么變都騙不了你。最典型的坑是刪除一個節(jié)點后你手里還握著指向這個節(jié)點的指針這時候再訪問它的后續(xù)節(jié)點就會出問題。2025年有一道選擇題就是考察這一點選項設置得很有迷惑性不畫圖的人很容易選錯。棧和隊列的概念本身很簡單但初賽喜歡把它們藏在表達式求值、括號匹配、DFS和BFS這些場景里來考。比如中綴表達式轉后綴表達式這個知識點是棧的經典應用SPJ初賽反復考過。核心規(guī)則是操作數(shù)直接輸出遇到運算符如果棧頂運算符優(yōu)先級不低于當前運算符就彈出左括號直接入棧右括號則彈出直到左括號。把這個規(guī)則寫成順口溜貼在錯題本上比臨時推導要節(jié)省大量時間。2025年還考了二叉樹的性質在完全二叉樹中如果節(jié)點總數(shù)為n那么葉子節(jié)點數(shù)是多少。這類題可以直接套公式——完全二叉樹葉子節(jié)點數(shù)等于n/2向上取整當n為奇數(shù)時葉子比度為2的節(jié)點多1。但更穩(wěn)妥的做法是畫一棵小規(guī)模的完全二叉樹找到規(guī)律再推廣到大規(guī)模。信息學競賽考的不是公式記憶而是規(guī)律推導能力這個思維習慣從初賽就要開始建立。3.3 搜索與圖論入門2025年命題的新熱點搜索和圖論在以前的CSP-J初賽里占比不算高但2025年的卷子里明顯加強了。DFS深度優(yōu)先搜索和BFS廣度優(yōu)先搜索的應用場景辨析、圖的鄰接矩陣和鄰接表的存儲方式、最短路徑的基本思想都出現(xiàn)在了題目中。DFS和BFS的區(qū)別我習慣用一個生活化的類比來解釋DFS就像走迷宮時“一條道走到黑走不通再回頭”BFS就像水波擴散“一圈一圈往外擴”。前者是棧的思想適合用來判斷連通性、找所有解后者是隊列的思想適合用來求最短路徑、分析層次結構。2025年的閱讀程序題里有一道就是在一張網格圖上做搜索問的是訪問順序。這種題只要你在草稿紙上把網格畫出來用箭頭標出每個節(jié)點的訪問序號多慢都不會錯。圖論入門里最??嫉倪€有歐拉路徑和歐拉回路。2025年的熱搜詞里出現(xiàn)了“多邊形”我估計這和一道關于一筆畫的題目有關——給一個多邊形的邊和頂點問能否一筆畫完。一筆畫問題的判定規(guī)則非常經典能夠一筆畫完的圖要么所有頂點的度數(shù)都是偶數(shù)存在歐拉回路要么只有兩個頂點的度數(shù)是奇數(shù)存在歐拉路徑。這個知識點極度適合出成初賽題目因為它的判定規(guī)則簡單但需要你理解“度”的概念還需要你認真數(shù)清楚每個頂點的邊數(shù)。3.4 動態(tài)規(guī)劃基礎突破壓軸題的關鍵一聽到動態(tài)規(guī)劃很多初賽選手就覺得“這是復賽才考的東西初賽不用管”。這個觀念在2025年之后最好改一改了。近兩年的完善程序題連續(xù)出現(xiàn)了動態(tài)規(guī)劃背景的題目比如背包問題、最長上升子序列。2025年的完善程序題雖然沒有直接以“DP”命名但那個求逆序對的題其歸并排序的思路和DP一樣需要深刻理解子問題的分解。動態(tài)規(guī)劃最重要的概念就是狀態(tài)和轉移方程。以01背包為例狀態(tài)dp[i][j]表示“從前i個物品中選總重量不超過j的最大價值”轉移方程是dp[i][j] max(dp[i-1][j], dp[i-1][j-w[i]] v[i])意思是當前物品要么不選要么選了之后加上它占用的重量和產生的價值。初賽里考動態(tài)規(guī)劃不會讓你現(xiàn)場設計一個很難的轉移方程更多是讓你看懂代碼里的dp數(shù)組是怎么滾動的以及某個邊界條件為什么這樣寫。這里有一個備考技巧把常見的DP模型做成一張速查表包括背包問題01背包、完全背包、多重背包、最長上升子序列LIS、最長公共子序列LCS、區(qū)間DP石子合并。每個模型記清楚狀態(tài)定義、轉移方程、初始化和最終答案的位置。初賽考到DP幾乎逃不出這幾個模型。2025年如果沒考到你2026年大概率會輪到。4. 2025年考生易錯點與常見問題排查4.1 六個最典型的失分場景我每年都會統(tǒng)計學生的估分和實際出分之間的差距。2025年幾個典型的失分場景值得所有人引以為戒。第一選擇題讀題不完整。今年的選擇題題干很長有些選手只看了前半句就開始分析選項結果忽略了后半句的“以下說法不正確的是”。一個“不”字讓無數(shù)人栽了跟頭。對策是把題干里的“不正確”“錯誤”“不可能”這些字眼圈出來再動筆。第二模擬程序時混淆變量名。i、j、k滿天飛跟蹤到后面自己都不知道哪個是哪個。建議在草稿紙上直接按代碼里的變量名建一張“變量追蹤表”每執(zhí)行一行就更新一次雖然慢但準確率極高。在初賽里慢就是快。第三遞歸題不畫棧??吹竭f歸函數(shù)就頭皮發(fā)麻在腦子里硬繞。其實遞歸的本質就是函數(shù)調用棧的壓入和彈出把每次調用的參數(shù)和返回值用“棧幀”的形式寫在紙上一層一層推就不會亂。這個方法在復試機考里同樣適用早學會早受益。第四二進制和十進制轉換時粗心。這類題本來是最容易得分的但大量選手在“負數(shù)”“補碼”這些概念上出錯。要記住在計算機里負數(shù)用補碼表示正數(shù)的補碼等于原碼負數(shù)的補碼等于原碼取反加一。2025年有一道選擇題就是考察-1在int型里的二進制表示答案是全1。別看這個知識點基礎錯的人真不少。第五完善程序題不讀注釋。很多完善程序題的開頭會有一大段中文注釋描述這個程序是干什么的。這些注釋不是廢話是命題人給你的“說明書”。不讀說明書的選手相當于蒙著眼睛做實驗白白浪費了最關鍵的提示信息。第六時間分配失衡。前面反復強調選擇題最多花25到30分鐘。如果到開考后40分鐘你還在選擇題里掙扎該果斷放棄了。把時間留給閱讀程序題兩分兩分地摳不如踏踏實實把大題做全對。4.2 考前30天的復習節(jié)奏建議初賽備考不需要一年到頭都繃著但考前30天是黃金沖刺期。我建議按照三個“10天”來劃分節(jié)奏。前10天回歸基礎梳理知識框架。把進制轉換、位運算、鏈表棧隊列、二叉樹、排序算法的時間復雜度、搜索基礎、動態(tài)規(guī)劃基礎這些考綱要求的知識點全部過一遍確保沒有盲區(qū)。這個階段可以用知識點大綱自測看到某個概念能不能在三句話內說出它的定義、適用場景和復雜度說不上來就回去復習。中間10天集中刷真題重點是近三年的CSP-J初賽真題。刷的時候要嚴格按照考試時間來兩小時不間斷模擬真實考場的緊張感。刷完對完答案做錯題分析把每道錯題所屬的知識點寫在該題旁邊。你會發(fā)現(xiàn)錯題高度集中在少數(shù)幾個知識點上針對性攻克這一個點比盲目刷十套新題都管用。最后10天回歸錯題本和復雜度速查表。不建議再做新題了把之前的錯題重做一遍確保每道題都不再出錯。同時把??嫉臅r間復雜度——冒泡O(n2)、快排平均O(n log n)最壞O(n2)、歸并穩(wěn)定O(n log n)、堆排O(n log n)、二分查找O(log n)——背到滾瓜爛熟。這些內容不需要思考但每年都有人在這里丟分丟了實在可惜。5. 關于2025年熱題“異或和”與“多邊形”的延展思考今年的熱詞里“異或和”和“多邊形”占據(jù)了話題中心。我特意把這兩類題拿出來單獨說因為它們代表了初賽命題的兩個重要方向位運算的深層應用和計算幾何的入門化?!爱惢蚝汀眴栴}表面上考的是異或運算實際考的是前綴和思想的拓展。對于一個數(shù)組a[1]到a[n]如果要求任意區(qū)間[l, r]的異或和可以預處理一個前綴異或數(shù)組pre[i] a[1] ^ a[2] ^ ... ^ a[i]那么區(qū)間[l, r]的異或和就等于pre[r] ^ pre[l-1]。這個轉化非常巧妙因為異或運算正好滿足逆運算等于自身的性質a ^ b ^ b a。選手如果只把異或當作“位運算的一種”來記而沒想過它能和前綴思想結合遇到這類題就會無從下手。這提醒我們初賽不會再直接考你某個運算符的功能而是考你能否把運算符的性質用于算法設計?!岸噙呅巍毕嚓P的問題今年更多以計算幾何的基礎概念出現(xiàn)比如點在多邊形內還是在多邊形外、多邊形的面積怎么算。CSP-J不會要求你掌握復雜的計算幾何算法但你需要理解最基本的原理判斷點是否在多邊形內可以用射線法——從該點向右引一條水平射線如果與多邊形邊的交點個數(shù)為奇數(shù)則點在多邊形內否則在多邊形外。這個原理的直觀理解是物理學里的“進出平衡”穿過一條邊就相當于從外部進入了多邊形再穿一條邊就出來了奇數(shù)個交點意味著最后停留在多邊形內部。這類題趣味性強、區(qū)分度高預計明年還會以不同形式出現(xiàn)。6. 初賽之后復賽銜接與長期規(guī)劃初賽只是第一關每年都會有很多選手以不錯的成績晉級復賽卻在機考環(huán)境下發(fā)揮失常。總結下來最大的原因只有一個平時在OJ上刷題時太依賴“試錯”沒有養(yǎng)成一次寫對的習慣。初賽是筆試答錯了還能改復賽是機考一次提交錯誤就要增加罰時。從初賽結束后到復賽開考前建議把重心從“刷題量”切換到“代碼規(guī)范”上。具體怎么做第一強迫自己在沒有樣例輸出的情況下只憑讀題和手算構造數(shù)據(jù)來驗證思路是否正確。第二注意變量類型。復賽的常見失分點就是十年沒變過的int溢出——n和m明明乘起來會超過21億你還用int存結果爆掉以后輸出一個負數(shù)。開數(shù)組前先算一遍數(shù)據(jù)范圍這是復賽拿分的第一原則。第三學好文件和重定向操作。freopen用錯一次整道題0分這比不會做還虧。我個人的習慣是每道題寫完后必須做三件事看一遍數(shù)據(jù)范圍算一遍空間是否超限重新讀一遍題目確認輸出格式尤其是要不要輸出空格和換行用邊界數(shù)據(jù)測試——n0、n1、最大值。這三件事熟練之后每次只需要兩分鐘但能把低級失誤率從30%壓到5%以內。最后說一點個人感受。信息學競賽這條路初賽是第一道篩子。它篩掉的不是“不懂算法的人”而是“沒有耐心讀懂題意的人”。我見過太多天賦型選手在初賽折戟原因不是不會做而是總覺得題目簡單、讀題太快、草稿不打、模擬不畫結果輸在粗心上。反過來那些愿意在草稿紙上認認真真畫遞歸棧、畫鏈表指針、列變量追蹤表的學生哪怕天賦平平最終也都走得很遠。競賽這條路沒有捷徑但少踩坑就是最快的路徑。希望這篇解析能幫你把該避的坑都避開我們復賽見。