很荣幸能参与瑞学堂组织的八月模拟赛,这场赛事为备战CSP-J和CSP-S的同学们提供了一次宝贵的实战演练机会。我结合官方题解的思路与个人解题代码,对赛题做了一些整理和分析,希望能抛砖引玉,与同学们一起交流探讨、共同进步。由于个人水平有限,分析中难免有疏漏或理解不到位之处,欢迎大家批评指正。
附上官网链接:复盘补题通道开启,专属报告免费领!瑞学杯8月第一轮模拟赛圆满结束
基础组
| 题目来源 |
标题 |
难度 |
星级 |
考察算法 |
一句话思路总结 |
| 瑞学堂 |
[[徐老师的阶乘计算器]] |
|
⭐ |
直接模拟 |
按阶乘定义从 \(2\) 到 \(n\) 累乘,初始化 res=1 自然覆盖 \(0!\) 边界,时间复杂度 \(O(T \cdot n)\),空间复杂度 \(O(1)\) |
| 瑞学堂 |
[[徐老师的零食分享队列]] |
|
⭐⭐ |
队列模拟 |
用队列维护朋友排队顺序,每次队首出队加上 \(a_i\) 后入队尾,模拟 \(n\) 轮分享后输出队列,时间复杂度 \(O(n+k)\),空间复杂度 \(O(k)\) |
| 瑞学堂 |
[[徐老师的团队活动]] |
|
⭐⭐⭐ |
排序 + 贪心枚举 |
将 \(a_i\) 排序后枚举老鼠人数 \(x\),贪心选择前 \(x\) 小当老鼠,只需验证边界 \(a_x < x < a_{x+1}\),时间复杂度 \(O(n \log n)\),空间复杂度 \(O(n)\) |
| 瑞学堂 |
[[徐老师的连续正整数和]] |
|
⭐⭐⭐ |
数学推导 + 枚举优化 |
利用等差数列公式 \(n = i \cdot a + \frac{i(i-1)}{2}\) 枚举长度 \(i\),判断 \(n - \frac{i(i-1)}{2}\) 能否被 \(i\) 整除,时间复杂度 \(O(\sqrt{n})\),空间复杂度 \(O(1)\) |
入门组
| 题目来源 |
标题 |
难度 |
星级 |
考察算法 |
一句话思路总结 |
| 瑞学堂 |
瑞瑞的环形花坛 |
|
⭐⭐⭐ |
环形转线性 + 滑动窗口 |
将环形数组复制翻倍后用双指针维护长度不超过 \(\lfloor n/2 \rfloor\) 的窗口,计数数组统计不同种类数,时间复杂度 \(O(n)\),空间复杂度 \(O(n)\) |
| 瑞学堂 |
徐老师的二进制加法 |
|
⭐⭐⭐ |
高精度二进制 + 进位链模拟 |
倒序存储二进制数,每次加 \(2^k\) 时模拟从第 \(k\) 位开始的进位链(连续 \(1\) 变 \(0\) 直到第一个 \(0\) 变 \(1\)),统计变化位数,时间复杂度均摊 \(O(1)\) 每次,空间复杂度 \(O(n)\) |
| 瑞学堂 |
[[瑞瑞的无限副本]] |
|
⭐⭐⭐⭐ |
BFS + 副本偏移环检测 |
在种子地图上BFS,记录到达每个位置的副本偏移量,若同种子位置出现不同偏移则存在无限循环,统计可达空地数为种类数,时间复杂度 \(O(nm)\),空间复杂度 \(O(nm)\) |
| 瑞学堂 |
瑞瑞的水果挑选 |
|
⭐⭐⭐⭐ |
双端队列 + 分块模拟 |
将连续同种水果分块后用双端队列存储,每轮从各块队尾取元素输出,取完后合并相邻同种块并压缩编号,时间复杂度 \(O(n)\),空间复杂度 \(O(n)\) |
| 瑞学堂 |
[[瑞瑞的装备强化]] |
|
⭐⭐⭐⭐ |
排序 + 前缀和 + 贪心枚举 |
将装备初始等级排序后枚举单件/批量分界点 \(i\),前缀和 \(O(1)\) 计算单件花费,批量花费为 \(m(t-v_i)\),取最小总花费,时间复杂度 \(O(n \log n)\),空间复杂度 \(O(n)\) |
| 瑞学堂 |
[[瑞瑞的魔法背包]] |
|
⭐⭐⭐⭐⭐ |
01背包 + 单调队列优化 |
将下标差约束转化为滑动窗口,对每个重量维护单调递减队列实现 \(O(1)\) 转移,时间复杂度 \(O(N \cdot M)\),空间复杂度 \(O(N \cdot M)\) |
提高组
| 题目来源 |
标题 |
难度 |
星级 |
考察算法 |
一句话思路总结 |
| 瑞学堂 |
瑞瑞的会议安排 |
|
⭐⭐⭐⭐ |
排序 + 前缀/后缀贪心 + 枚举分界 |
按结束时间排序后,预处理前缀和后缀各自的最优不重叠会议数,枚举两段分界点取最大和,时间复杂度 \(O(n \log n)\),空间复杂度 \(O(n)\) |
| 瑞学堂 |
瑞瑞的能源网络 |
|
⭐⭐⭐⭐⭐ |
DFS + 反悔贪心 + 大根堆 |
DFS计算往返损耗后将部门参数化为(门槛,消耗),按门槛升序遍历,用大根堆维护已选任务实现替换优化,时间复杂度 \(O(n + m \log m)\),空间复杂度 \(O(n + m)\) |
| 瑞学堂 |
瑞瑞的体力回收路径 |
|
⭐⭐⭐⭐⭐ |
状态扩展 Dijkstra |
将体力作为状态维度,用二维 Dijkstra 求 \((u,s)\) 的最短通行时间,转移时处理体力非负约束和上限截断,时间复杂度 \(O(mH \log(nH))\),空间复杂度 \(O(nH)\) |
| 瑞学堂 |
瑞瑞的字符统计 |
|
⭐⭐⭐⭐⭐ |
Manacher + 二阶差分 |
Manacher求回文半径后,用二阶差分标记每个中心的三角形覆盖贡献,两次前缀和还原各位置覆盖次数,统计字母出现次数后除以2去重,时间复杂度 \(O(n)\),空间复杂度 \(O(n)\) |
| 瑞学堂 |
瑞瑞的基因编译 |
|
⭐⭐⭐⭐⭐ |
序列 Splay + 双哈希 + 懒标记翻转 |
用 Splay 树维护序列顺序,每个节点维护正向/反向哈希,通过哨兵提取区间实现 \(O(\log n)\) 的单点修改、区间翻转和回文查询,时间复杂度 \(O((n+q)\log n)\),空间复杂度 \(O(n)\) |
| 瑞学堂 |
瑞瑞的符文神树 |
|
⭐⭐⭐⭐⭐ |
树形DP + 区间DP + 最大次大值合并 |
以根建立有根树,用 \(down[u][l][r]\) 和 \(up[u][l][r]\) 记录从 \(u\) 向下/向上匹配 \(b[l..r]\) 的最长链,子树合并时用最大次大值保证简单路径,时间复杂度 \(O(nK^2 \cdot \deg)\),空间复杂度 \(O(nK^2)\) |