2026 CSP-J 复赛真题全解析丨四道题背后,孩子真正在拼什么?
- 2026-11-01 15:56:22

考完当天,不少家长在群里问:今年题难不难?今天,微思特带家长一起看懂今年入门组(CSP-J)的四道题,以及它传递出的几个信号。
今年 J 组复赛四道题,题材都来自生活场景,但暗藏梯度:
简单说:T1、T2 是把基础功练扎实就能拿下的题;T3、T4 则是“看不看得懂题目背后的规律”——这正是拉开差距的地方。













T1 旅游 丨 模拟 · 签到题
按题意依次判断,后一个条件必须建立在前一个成立的基础上:
①车厢号相同→同车厢;
②再加座位号前两位相同→同排;
③座位字母同属 ABC 或同属 DF→过道同侧;
④字母组成 AB/BC/DF 之一→相邻。
⚠️ 易错点:C 和 D 之间有过道,不相邻;而 D 和 F 字母不连续,却是相邻座位。时间/空间复杂度均为 O(1)。

T2 回文串 丨 双指针 · 贪心
回文串要求每对关于中心对称的字符相同。一对字符原本相同则不动;不同则至少改一个、且改一个就够。各对互不影响,答案就是字符不同的对称位置对数;长度为奇数时,中间字符不用改。
📊 数据范围分两档
- 56 分档
:总长度 L ≤ 2×10⁵,直接把各段展开成串,左右指针统计不同对。O(n+L)。
- 100 分档
:L 最大达 2×10¹⁴,不能逐字符。按"段"处理——同段字符相同,一次比较 t = min(两段剩余) 对,c_l≠c_r 则答案加 t。O(n),答案要用 long long。

T3 按位与 丨 位运算 · 思维题
解法一:暴力 DFS 枚举(50 分)
解题思路
对于小规模数据,可以通过深度优先搜索(DFS)枚举所有「选
实现时加入可行性剪枝:若剩余未处理的数字数量不足以凑够还需要选的个数,直接回溯,避免无效搜索。
初始按位与值设为全 1(INT_MAX),因为任意数与全 1 按位与结果等于自身,不会影响后续运算。
得分说明
可稳定通过n≤20 的测试点(1~5),以及n=2000 且m=1n = 2 0 0 0 、m=nm = 1 、m=2m = n 的测试点(6~10),合计约50分。m = 2 当 m 处于中间值或m n 达到2×10^5 旅游 回文串 按位与 纸牌游戏n
参考代码

解法二:逐位贪心(满分)
核心性质
按位与运算有一个关键性质:结果的某一位为 1,当且仅当所有参与运算的数该位都为 1。
二进制高位的权重远大于所有低位权重之和,因此要最大化结果,应当优先保证高位为 1,再依次考虑低位。
算法思路
从最高位(第 29 位,因ai<2^30
初始化答案
ans = 0,表示当前已确定的二进制位;遍历每一位
j:j 构造候选值 t = ans | (1 << j),表示尝试将第 j 位加入答案;j 统计数组中满足 (a[i] & t) == t的数的个数——即该数包含候选值 t 的所有 1 位;若满足条件的数≥m, 说明可以选出 m 个数同时拥有这些位,更新m ans = t;
若不足 m 个,放弃当前位,继续处理下一位。m
3.遍历结束后,ans 即为最大按位与结果。
正确性说明
- 同一批数保证
:每次验证都要求数字包含「所有已确定高位 + 当前试探位」,天然保证最终所有保留的 1 位都对应同一批至少 m 个数,不会出现高位和低位来自不同集合的问题。m - 贪心最优性
:二进制高位权重高于所有低位之和,优先保证高位为 1 的策略,最终得到的一定是全局最大值。
参考代码

T4 纸牌游戏 | 栈 · 压轴
暴力做法需要模拟每一局游戏,时间复杂度为O(n²)。实际上,我们可以跳过不需要处理的牌,直接统计最终结果。
以样例1 1 2 1 3 为例:
第一局从位置1开始,点数为 1。当后面再次出现 1 时,中间的牌都会被收走,因此可以直接跳到最后一个 1 的下一个位置,也就是位置4。
由此发现:
last[x]:记录点数 x最后一次出现的位置。cnt[i]:记录有多少局游戏会经过位置 i。ans[x]:记录最终有多少局留下点数 x。
具体做法:
- 初始化:
每个位置都是一局游戏的起点,因此 cnt[i] = 1。 - 统计答案:
有 cnt[i]局游戏经过位置i,说明这些游戏最终都会留下点数a[i],所以ans[a[i]] += cnt[i]。 - 递推次数:
下一次需要处理的位置为 j = last[a[i]] + 1。经过位置i的所有游戏都会继续跳到位置j,因此cnt[j] += cnt[i]。
从左到右遍历所有位置,就能一次性统计全部游戏的结果,无须逐局模拟。

综合多家教练组的考后复盘,今年的大判断是:整体难度与去年相当、比前年友好,但“区分度重新立起来”——最难的题更难了,中低档题更友好了。
1. 别只盯着“会不会写代码”。 这套题真正考的是五种能力:读题、由数据范围推做法、观察性质、成批计算、细节严谨。这些,都是计算思维的底色。
2. 低龄孩子不必急着冲 C++。 先用 Scratch、Python 把兴趣和逻辑养起来,到五六年级开始学C++,12岁移到,就可以走信奥路径,这样会更顺。
3. 小学阶段可以用 GESP 检验积累。 它是现阶段很好的“阶段体检”,不必焦虑。
4. 把“看懂问题、拆解问题”当成日常训练。 生活里的小规则、小流程,都可以和孩子聊:“如果是电脑,它会怎么一步步做?”
关于我们 · 微思特创客中心
专注青少年编程教育,目前开设四门课程:
Scratch 图形化编程 · Python 代码编程 · C++ 算法竞赛 · 计算思维课
地址:茂名市茂南区高凉北路69号
咨询电话:0668-2919770

扫码了解更多白名单赛事