第11章学习笔记:字符串与竞赛数论
课程笔记用前缀匹配结构和模运算消除重复比较。
关联:章节 第11章 字符串与竞赛数论
第11章笔记:字符串与竞赛数论
目标
用前缀匹配结构和模运算消除重复比较。
七课依赖
- 字符串匹配的暴力基线:围绕字符串匹配的暴力基线先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度;边界:哈希可能碰撞;模除法要求逆元存在;KMP下标约定必须统一。 本课必须再检查边界输入、整数溢出、下标和不可行状态。
- KMP失配函数:围绕KMP失配函数先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度;边界:哈希可能碰撞;模除法要求逆元存在;KMP下标约定必须统一。 本课必须再检查边界输入、整数溢出、下标和不可行状态。
- Z函数与前缀匹配:围绕Z函数与前缀匹配先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度;边界:哈希可能碰撞;模除法要求逆元存在;KMP下标约定必须统一。 本课必须再检查边界输入、整数溢出、下标和不可行状态。
- 滚动哈希与碰撞核验:围绕滚动哈希与碰撞核验先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度;边界:哈希可能碰撞;模除法要求逆元存在;KMP下标约定必须统一。 本课必须再检查边界输入、整数溢出、下标和不可行状态。
- gcd与扩展欧几里得:围绕gcd与扩展欧几里得先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度;边界:哈希可能碰撞;模除法要求逆元存在;KMP下标约定必须统一。 本课必须再检查边界输入、整数溢出、下标和不可行状态。
- 快速幂、逆元与组合数:围绕快速幂、逆元与组合数先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度;边界:哈希可能碰撞;模除法要求逆元存在;KMP下标约定必须统一。 本课必须再检查边界输入、整数溢出、下标和不可行状态。
- 筛法与质因数分解:围绕筛法与质因数分解先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度;边界:哈希可能碰撞;模除法要求逆元存在;KMP下标约定必须统一。 本课必须再检查边界输入、整数溢出、下标和不可行状态。
复杂度与适用条件表
| 算法对象 | 不变量/复杂度来源 | 使用边界 |
|---|---|---|
| 字符串匹配的暴力基线 | 围绕字符串匹配的暴力基线先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度 | 哈希可能碰撞;模除法要求逆元存在;KMP下标约定必须统一。 本课必须再检查边界输入、整数溢出、下标和不可行状态。 |
| KMP失配函数 | 围绕KMP失配函数先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度 | 哈希可能碰撞;模除法要求逆元存在;KMP下标约定必须统一。 本课必须再检查边界输入、整数溢出、下标和不可行状态。 |
| Z函数与前缀匹配 | 围绕Z函数与前缀匹配先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度 | 哈希可能碰撞;模除法要求逆元存在;KMP下标约定必须统一。 本课必须再检查边界输入、整数溢出、下标和不可行状态。 |
| 滚动哈希与碰撞核验 | 围绕滚动哈希与碰撞核验先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度 | 哈希可能碰撞;模除法要求逆元存在;KMP下标约定必须统一。 本课必须再检查边界输入、整数溢出、下标和不可行状态。 |
| gcd与扩展欧几里得 | 围绕gcd与扩展欧几里得先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度 | 哈希可能碰撞;模除法要求逆元存在;KMP下标约定必须统一。 本课必须再检查边界输入、整数溢出、下标和不可行状态。 |
| 快速幂、逆元与组合数 | 围绕快速幂、逆元与组合数先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度 | 哈希可能碰撞;模除法要求逆元存在;KMP下标约定必须统一。 本课必须再检查边界输入、整数溢出、下标和不可行状态。 |
| 筛法与质因数分解 | 围绕筛法与质因数分解先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度 | 哈希可能碰撞;模除法要求逆元存在;KMP下标约定必须统一。 本课必须再检查边界输入、整数溢出、下标和不可行状态。 |
复盘
每题保存暴力、优化、证明、四组边界测试和首个WA输入;一周后换数据重做。