2026 CSP-J 复赛真题解析(上):T1 旅游 · T2 回文串
- 2026-11-02 09:00:18
关键词:CSP-J 2026 复赛、CSP-J 真题解析、信息学奥赛入门组、旅游、回文串、信奥复盘
今天(10 月 31 日)上午 8:30,CCF CSP-J/S 2026 第二轮认证(入门组)在全国各赛区开考,12:00 收卷。题面很快在信奥社群里传开。
四道题我们分上、下两篇来讲。上篇先看 T1 旅游、T2 回文串。
说明:真题版权归 CCF 所有,本文仅作学习交流使用,题面以官方正式版本为准;最终成绩与标准解答以 CCF 官方发布为准。
一、四道题速览
今年入门组四道题都是传统型:每题 1.0 秒、1024 MiB,C++ 编译选项 -O2 -std=c++14 -static,源文件 travel.cpp / string.cpp / and.cpp / card.cpp,文件输入输出。

二、T1 旅游(travel)—— 签到题

解析
题意:给出两张二等座车票的车厢号和座位号,依次判断四个问题,输出长度为 4 的 01 串(1 是、0 否):① 是否同一节车厢;② 是否同车厢同一排;③ 是否同车厢同一排且过道同一侧;④ 是否相邻。
座位布局:列车 17 节车厢(01–17),01 和 16 号是一等座,其余二等座。每节二等座 18 排、每排 5 个座位,字母从左到右 A B C | 过道 | D F。
思路:座位号前两位是排号,第三位是字母。四个问题层层递进判断即可,时间复杂度 O(1)。
易错点:不能直接用字母 ASCII 差判断"相邻"。C、D 之间隔着过道并不相邻,而 D、F 中间没有别的座位是相邻的。合法相邻组合只有 AB、BC、DF(及反向),判断相邻必须按组合来。
样例:输入 02 01A 02 01B → 输出 1111;输入 02 01C 02 01A → 输出 1110(隔着 B 座,不相邻)。
示例代码(参考,能 AC)
示例代码(参考实现),按题面逻辑与样例验证正确;正式提交保留 freopen 文件读写,非文件 IO 平台自行去掉即可。

三、T2 回文串(string)—— 双指针,别暴力展开

解析
题意:字符串以"游程压缩"形式给出——共 n 段,第 i 段由 a_i 个字符 c_i 构成,拼接得到 S。求最少修改几个位置的字符能把 S 改成回文串。
考点:回文约束只作用在对称位置上(第 i 个和第 L+1−i 个),不同对称组互不影响。答案等于"左右字符不同的对称组"数量。
思路:双指针从首尾两段向中间扫描,每次批量配对 t = min(remL, remR, limit - done) 组。若左段字符 c[l] 与右段 c[r] 不同,这 t 组每组都要改一个字符,ans += t。消耗对应长度后移动指针,直到处理完所有 ⌊L/2⌋ 组或左右相遇。每段最多消耗一次,总复杂度 O(n)。
易错点:总长度 L 可达 2×10¹⁴,绝对不能把字符串展开。答案、长度、剩余长度一律用 long long——样例 3 答案就是 3×10⁹,远超 int 范围。
示例代码(参考,能 AC)
示例代码(参考实现),双指针分段配对,答案与长度均用 long long;正式提交保留文件读写。

四、下篇预告
下篇拆 T3 按位与(位运算贪心)、T4 纸牌游戏(树形贡献统计),并给整体难度梯度与考后复盘建议。
真题版权归 CCF 所有,标准解答与最终成绩以 CCF 官方发布为准。
真题解析与考点专项突破,详见 OI伴学:https://oiai.zsweiluo.tech/analysis
免费薄弱点诊断:https://oiai.zsweiluo.tech/diagnose