NOIP知识点大提纲

本文详细梳理了NOIP竞赛中的基础算法和数据结构,包括搜索与优化、快速幂、二分查找、动态规划、矩阵乘法、最大公约数、线性筛除质数、KMP字符串匹配、哈希表等。还介绍了图论知识如DFS、Floyd算法、迪杰斯特拉算法、SPFA算法以及树的直径和LCA计算。同时涵盖了数据结构如链表、队列、堆、线段树、树状数组等,以及读入优化和C++编程注意事项。
摘要由CSDN通过智能技术生成

基础算法 

  1. 搜索与优化 一般的深搜不能满足题目要求。当题目一时没有头绪或者无从下手时不妨考虑搜索。剪 枝的原则:正确、高效。一般分为可行性剪枝和最优性剪枝。还可以使用记忆化搜索。
  2. 快速幂
    复杂度 O(log n)。需要取模时基数和返回值都需要被取模。
  3. 二分查找 根据中值合法性缩小可行范围。O(log n)。 
  4. 归并排序求逆序对 利用辅助数组排序。合并过程中可以求出逆序对的个数。复杂度 O(n*log n)。 
  5. 数据离散化 对数据排序,然后从小到大扫描一遍,如果和前一个元素相同则编号为前一个元素,否 则计数器加一,编号为计数器编号。时间复杂度 O(n*log n)。 
  6. 动态规划与递推 设计好状态,决策考虑全面,转移可分为转入和转出型。滚动数组时需要清空数组,并 判断合法状态。压成一维的时候注意转移的后效性。树形动态规划请注意父节点的倒置 子树对答案的影响。 
  7. 矩阵乘法与矩阵快速幂 两个矩阵可以相乘,当且仅当前者行数与后者列数相等,结果为一个矩阵。矩阵乘法不 满足交换律。快速幂可以在重载运算符后类比普通快速幂做。 
  8. 最大公约数与扩展欧几里得 用于求逆元和求解同余方程。对于其中的某一个解的最小非负整数解,可以是取模加模 再取模。 
  9. 费马小定理 不适用于强伪质数。但是适用于大多数情况。可以用于求模质数下的逆元。 

  10. 线性筛除质数 每一个合数数都能分解除一个最小质因子。利用此性质筛除质数,复杂度 O(n)。 

  11. KMP 字符串匹配
       预处理模式串的失配转移参数 next[i],若下一位失配则指针 cur 跳转到 next[cur]。 若cur = 0则结束跳转。复杂度O(n+m)。 

  12. 字符串哈希 

  设定哈希种子为一个质数,必须大于字符集大小。如果

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值