CCC Junior 最后一题的分,常常丢在数据范围上:最后一两档只给能在时限内跑完的写法。先看上限,再找规律,是拿回这几分的路子。

先看规则:最后一题的分是怎么给的
CCC 一共 5 道题,3 个小时,每题 15 分。滑铁卢大学 CEMC 在比赛说明里写得很直白:一道题可以拆成几档(subtask),小一点、限制多一点的版本先给部分分;越往后的题,可能有一部分分,只给能在时限内跑完的高效解法。
来源 · CEMC, University of Waterloo · 2027
Junior 第 5 题,官方大纲写的是“难度递进”:递归、二维数组、高效或巧妙的算法。下面这张表把四年的 J5 摆在一起,看需要高效写法的那几档,数据有多大、值几分。
| 年份 | 题目 | 需要高效写法的档 | 这几档的分值 | 关键办法 |
|---|---|---|---|---|
| 2026 | 车位照明(Beams of Light) | 车位、灯、提问都到 50 万 | 9 分 | 差分加一遍累加 |
| 2025 | 连通领地(Connecting Territories) | 行、列都到 2 万 | 2 分 | 价格用取模算,DP 只留两行 |
| 2022 | 方形泳池(Square Pool) | 院子 50 万 × 50 万,树最多 100 棵 | 7 分 | 只围着树和边界找位置 |
| 2021 | 现代艺术(Modern Art) | 500 万个格子,100 万次下笔 | 5 分 | 只数刷了单数次的行和列 |
题目和每档的分值都来自 CEMC 公布的各年 CCC Junior 题目,下面每一节都附了原题链接。
4 道真题,分丢在哪
四道题表面上分别像模拟、动态规划、搜索,真正卡分的是同一件事:程序要碰的格子或次数太多,跑不完,或者存不下。
2026 J5 车位照明:别每问一次都把灯查一遍
一排 N 个车位,挂着 L 盏灯,每盏灯照亮它底下和左右各 S 个车位;然后问 Q 次,某个车位亮不亮(2026 年原题)。最后一档 N、L、Q 都能到 50 万,占 15 分里的 9 分。每问一次就把所有灯查一遍,最坏是 50 万乘 50 万,也就是 2500 亿次检查,跑不完。
官方解析的说法是,最后两档 L 和 Q 都很大,不能再为每个问题逐盏查灯,要在回答之前先做准备:
For the last two subtasks, L and Q are both very large so we can no longer consider each light to answer each question. Instead, we need to do some work before starting to answer the questions. —— CEMC,2026 CCC Junior 官方解析
- 开始:每盏灯照亮 P−S 到 P+S(→ 起点那一格 +1)
- 起点那一格 +1(→ 终点后面一格 −1)
- 终点后面一格 −1(→ 从左往右累加一遍)
- 从左往右累加一遍(→ 累加值大于 0 的车位就亮)
- 结束:累加值大于 0 的车位就亮
这就是差分加一遍累加:每盏灯只记开头和结尾,最后从左往右加一遍,就知道每个车位被几盏灯照着。灯和提问再多,也只是各过一遍。

2025 J5 连通领地:4 亿个格子存不下
地块的价格从左到右、一行接一行,按 1、2、3……M 循环。每行买一块,下一块要和上一块挨着(斜对角也算),问从第一行走到最后一行最少花多少钱。一看就是一行一行往下推的动态规划。
前三档行、列最多 100,整张表存下来没问题;最后一档行和列都到 2 万,整张表就是 4 亿个格子,内存吃不消。这一档值 2 分(2025 年原题)。
规律藏在价格里:第 r 行第 c 列的价格是 ((r−1)×C + c−1) mod M + 1,用到时现算,不用存。动态规划每一行只依赖上一行,所以只留上一行和这一行就够了。

2022 J5 方形泳池:院子 50 万宽,树只有 100 棵
N×N 的院子里有 T 棵树,要找能放下的最大正方形泳池。前两档院子不超过 50 × 50,把所有位置和大小都试一遍就行;后两档院子到 50 万 × 50 万,树最多 100 棵,这两档一共 7 分(2022 年原题)。
CEMC 的官方解析直接说,这道题想拿 8 分以上特别难:
Earning more than 8 marks on J5 was especially difficult and intended to provide a significant challenge. —— CEMC,2022 CCC Junior 官方解析
关键是看到树很少,答案应该只跟树的数量有关,跟院子多大无关。官方给的思路:最大的泳池可以往上推,直到碰到树或边界;也可以往左推,直到碰到树或边界。所以泳池的上边和左边,各自只有 T+1 种可能。把这些组合挨个试,再看剩下的树和边界允许泳池多大,运算量只和树的数量有关。
2021 J5 现代艺术:只数单双
一块 M×N 的黑画布,每次刷一整行或一整列,黑变金、金变黑。最后一档 500 万个格子、100 万次下笔,这一档 5 分;一笔一笔真去涂,会超时(2021 年原题)。
一个格子最后是什么颜色,只看它那一行和那一列各被刷了几次:加起来是单数,就是金色。设刷了单数次的行有 r 行、列有 c 列,金色格子就是 r × (N − c) + (M − r) × c。拿官方样例验算:3×3 的画布刷第 1 行、再刷第 1 列,r = 1、c = 1,1×2 + 2×1 = 4,和标准答案一致。

这四道题的共同点:先找规律,再写算法
四道题没有一道要超纲的新算法。差分、取模、只看单双、只围着树找位置,都是先在纸上把小数据写出来、看出规律,再用常规的循环和动态规划收尾。这和八九年级数学课上找数列的规律,其实是一回事。
反过来,只会套模板、不看数据范围的写法,通常能拿到小数据那几档。按上面的评分表,只能处理小数据的写法,2026 年最多 6 分,2025 年最多 13 分,2022 年最多 8 分,2021 年最多 10 分。

离 2027 年 2 月 17 日开考,这四个月怎么练
2027 年的 CCC 在 2 月 17 日(周三,南北美洲)举行,学校向 CEMC 订考的截止日是 2 月 11 日。从现在到开考大约四个月,可以按这四步排:
- 读题先看数据范围。把几个上限乘一乘,估一下程序要跑多少步;乘出来上亿,就别想着一格一格算。
- 小数据在纸上手推。把前几行、前几步写出来,规律常常自己冒出来。
- 先把小数据那几档的分拿稳。暴力写法也能拿分,交上去拿到了,再想满分的写法。
- 照考试的样子整套练。3 小时、5 道题,在 CCC 官方在线评测(CCC Online Grader,可以免费注册练习账号)上做往年整卷,每次复盘分丢在哪一题、哪一档。

想按这个节奏备赛,可以看看 STEMRise 的CCC Junior 备赛小班:5–8 人小班,万锦校区和线上同步。还没学过编程的孩子,先从编程课程里的 Python 基础开始,或者先做一次免费编程测评。想先了解这项比赛的来历,可以看滑铁卢大学 CEMC 编程挑战赛介绍。

