“每个课程”按 主题.md 的 11 个算法大主题计算;“历年真题”保持中国竞赛真题体系,不用国际平台替代。每个主题以 3 道 Codeforces 2400–2700 或思维强度相当的 AtCoder Grand Contest 题为主,只有转化彼此独立时才增至 4 道。已有详细讲解的题可计入。AGC 只在转化更典型时替换同质 CF 题,不作为降低难度或凑数量的来源。
高阶题不按“用了更复杂的数据结构”入选。若去掉模板名后只剩常规分层图、常规矩阵 Lazy 或直接 CRT,则降为练习;主池优先保留需要改变对象、补图/对偶、隐式图、参数化、状态压缩或反向建模的题。
每道扩展题正文必须按以下考虑链展开:
| 主题 | VJudge 查询 | 难度 | 核心转化 |
|---|---|---|---|
| 欧拉路径 | CodeForces-508D | 2500 | 固定窗口重建 → 后缀点、窗口边、欧拉路径 |
| 欧拉路径 | CodeForces-547D | 2600 | 坐标奇偶约束 → 边二染/欧拉定向 |
| 欧拉路径 | CodeForces-527E | 2600 | 奇度与边数奇偶补边 → 欧拉回路交替定向 |
| 欧拉路径 | CodeForces-1361C | 2500 | 二进制答案单调性 → 掩码点上的欧拉回路 |
| 强/双连通 | CodeForces-962F | 2400 | “恰属一个环” → 点双块边数等于点数 |
| 强/双连通 | CodeForces-467D | 2400 | 单词替换闭包 → SCC 缩点 DAG 反向 DP |
| 强/双连通 | CodeForces-1344C | 2600 | 量词可达条件 → SCC 与缩点偏序结构 |
| Bitset/位并行 | CodeForces-1097F | 2500 | gcd 多重集 → 整除 zeta 坐标上的 AND/XOR |
| Bitset/位并行 | CodeForces-986C | 2500 | AND 为 0 → 补集子掩码图上的隐式遍历 |
| Bitset/位并行 | CodeForces-1523D | 2400 | 高维公共 1 → 随机抽行与子集 DP |
| KMP/Manacher | CodeForces-825F | 2400 | 子串压缩 → KMP 周期代价 + 区间 DP |
| KMP/Manacher | CodeForces-1827C | 2600 | 回文后缀限制 → Manacher/哈希与 DP 跳转 |
| KMP/Manacher | CodeForces-955D | 2600 | 模式拆成两段 → 正反前缀匹配拼接 |
| 最短路 | CodeForces-1340C | 2400 | 周期通行规则 → 位置×绿灯时间的 0-1 BFS |
| 最短路 | CodeForces-1442C | 2400 | 翻转代价指数增长 → 次数优先的分阶段最短路 |
| 最短路 | CodeForces-1051F | 2400 | 图近似一棵树 → LCA 距离 + 少量特殊源 Dijkstra |
| 生成树 | CodeForces-125E | 2400 | 指定特殊边数量 → 权值加参数的 WQS/Kruskal |
| 生成树 | CodeForces-1408E | 2400 | 禁止彩虹环 → 二分关联图上的最大生成森林补集 |
| 生成树 | CodeForces-1508C | 2500 | 隐式完全图 → 补图连通块与候选边削减 |
| 二分图 | CodeForces-741C | 2600 | 三连续约束 → 补固定配对边后的偶环二染 |
| 二分图 | CodeForces-1634E | 2400 | 多重出现公平分配 → 关联二分图欧拉交替 |
| 二分图 | CodeForces-1009G | 2400 | 字典序贪心可行性 → Hall/最大流动态检查 |
| Segment/Fenwick | CodeForces-484E | 2500 | 区间连续高值段 → 按阈值持久化版本 |
| Segment/Fenwick | CodeForces-786C | 2400 | 对所有容量求最少分段 → 大小参数分治计算 |
| Segment/Fenwick | CodeForces-1439C | 2600 | 单调区间购买 → 最大值剪枝与批量覆盖 |
| Segment/Fenwick | CodeForces-1172F | 3300(灵活性) | 区间视为函数 → 合成函数摘要而非数值摘要 |
| 基环树 | CodeForces-835F | 2500 | 基环树直径 → 挂树直径 + 环上单调队列 |
| 基环树 | CodeForces-1270G | 2700 | 零和子集构造 → 函数图中取一个有向环 |
| 基环树 | CodeForces-875F | 2500 | 最大权可选边 → 伪森林独立性上的 Kruskal 贪心 |
| 高斯/CRT | CodeForces-724G | 2600 | 图上 XOR 路径全集 → 生成树势能与环线性基 |
| 高斯/CRT | CodeForces-906D | 2700 | 非互质幂塔取模 → Euler 链与“大数标记” |
| 高斯/CRT | CodeForces-959F | 2400 | 前缀 XOR 表示方案数 → 增量线性基与自由维数 |
| 平衡树/序列结构 | CodeForces-455D | 2700 | 在线循环移位与频次 → 分块/隐式树结构选择 |
| 平衡树/序列结构 | CodeForces-702F | 2800(灵活性) | 购买过程按能力分组 → 带 Lazy 的按值 Treap |
| 平衡树/序列结构 | CodeForces-896C | 2600 | 随机区间操作 → 有序区间树的 split/assign |
其中平衡树组会明确比较 FHQ/Splay、分块、ODT、线段树等接口:重点不是强迫所有题使用平衡树,而是学习从操作集合判断哪种动态序列结构真正合适。