椰程信奥 · 限时训练单
专题11·关联容器 · 限时训练单(50 分钟 · A/B 双卷)
训练说明
| 项目 | 内容 |
| 题量 | 2 题:明明的随机数 RANDOM / 主要成分 MAINCOMP |
| 时长 | 50 分钟。闹钟一次设定,不暂停、不查资料、不回看课件。 |
| 分层 | A 卷=冲满分路线;B 卷=保部分分路线。由教练按上次成绩分派,学生不自选。 |
| 纪律 | 时间到立即停手并提交。没写完的正解也要先把当前能过的版本交上去。 |
| 集训定位 | 5 天集训第 4 天 · 代码量线(T2/T3 不崩) |
一、时间盒(50 分钟)
| 时段 | 时间 | 做什么 | 做完的标志 |
| 第 1 段 | 0–5′ | 两题全部读一遍,在题号旁写下「这题像哪种模型」和「我先拿哪一档」 | 两行字写完 |
| 第 2 段 | 5–22′ | 第 1 题:先写能过小数据的暴力版,再改正解 | 样例过了、暴力版留着 |
| 第 3 段 | 22–40′ | 第 2 题:同上,先保第 1、2 档 | 样例过了 |
| 第 4 段 | 40–47′ | 对拍:小数据把暴力版与正解版跑同一批随机输入,比对 200 组 | 0 组不一致 |
| 第 5 段 | 47–50′ | 提交前 60 秒自检(见第四节) | 四条全部打勾 |
唯一硬规定:时间盒一到就换下一题,哪怕正解只差一行。
复赛里「四题各拿 60 分」永远胜过「一题 100 分、三题 0 分」。
二、A 卷 · 冲满分路线(每题都要冲 100)
- 明明的随机数(RANDOM):
set<int> 插入后直接遍历输出,天然去重 + 有序 易错:set 会排序;若要求保持原顺序就必须改用数组 + 标记 - 主要成分(MAINCOMP):
map<T,int> 计数,扫一遍取最大 易错:出现次数必须超过一半(cnt*2 > n)才算主要成分
- 必做:每题都留一份暴力版,用它造小数据对拍 200 组,0 不一致才算过。
三、B 卷 · 保部分分路线(先把能拿的拿稳)
| 题目 | 先拿档位 | 具体动作 | 封顶时间 |
| 明明的随机数 | 特判 → 暴力 → 特殊性质 | n == 1 → 输出 1 和它本身;排序 + 手动去重(相邻比较),n ≤ 10⁵ 稳过;只去重不排序(保持原顺序)→ 部分测试点只查去重 | 12′ |
| 主要成分 | 特判 → 暴力 → 特殊性质 | 只有一种元素 → 就是它;双重循环统计每种出现次数,n ≤ 10⁴ 稳过;元素值域很小(如 ≤ 1000)→ 用数组当桶计数 | 12′ |
B 卷不要求满分,要求"零爆零":每题都至少有输出、都不 RE、都不编译失败。
先保证这件事,再回头补正解。
四、提交前 60 秒自检(四条,逐条打勾)
| ✓ | 检查项 | 典型翻车 |
| ☐ | 数据范围:int 会不会溢出,要不要 long long | 样例过了、大数据爆 0 |
| ☐ | 边界情形:n = 0 / 1、空输入、最大值,各手算一遍 | 特判档自己写错 |
| ☐ | 文件名与读写:是否 freopen、多测时数组有没有清空 | 本地对、提交 0 分 |
| ☐ | 本讲最易错:题目要求保持原顺序时误用 set(set 会自动排序) | 整题思路对、一分拿不到 |
五、部分分阶梯速查(贴在显示器上)
| 档位 | 预期分 | 做法 | 耗时 |
| ① 特判档 | 5–10 | n == 0/1、全为 0、已有序等极端情况直接输出 | 2′ |
| ② 暴力档 | 20–30 | 多重循环 / DFS 全枚举 / 朴素 O(n³),不优化,保证小数据全对 | 8′ |
| ③ 特殊性质档 | 40–60 | 针对部分测试点的性质单独写一份(规模小、值相同、类型单一) | 10′ |
| ④ 正解档 | 100 | 本讲算法 + 与暴力版对拍验证 | 15′+ |
六、教练批阅栏(当堂填完,不留到课后)
| 题目 | 得分 | 丢在哪一档 | 具体原因(写现象,不写"粗心") | 下次动作 |
| 明明的随机数 | | | | |
| 主要成分 | | | | |
批阅规则:丢分原因必须写成可执行的现象(例如"递推下标差了一位"),
禁止出现"粗心""没看清"这类无法产生下一步动作的词。
七、课后加练 · 近年 CSP-J/S 真题
| 洛谷 | 题名 | 年份组别 |
难度 | 与本讲的关系 |
| P11227 | 扑克牌 | CSP-J 2024 | 入门 | 直接对应:set 去重(已入题包 POKER24) |
加练规则:只做与本讲对应的那一道,做完照样走四档阶梯
(先特判 → 再暴力 → 再特殊性质 → 最后正解),并且必须写暴力版对拍。
真题的价值在于"考法",不在于"多刷"。