NOIP提高组算法总结
数论:
1.欧几里得
2.拓展欧几里得
3.同余方程——拓展欧几里得
4.逆元——费马小定理,拓展欧几里得(有的逆元不存在)
5.同余线性方程组(中国剩余定理)——拓展欧几里得
6.费马小定理
7.欧拉定理
对于互质的正整数 a 和 n ,有 aφ(n) ≡ 1 mod n 。
8.欧拉函数
9.欧拉筛法——线性筛法
10.大组合数求法——逆元+O(n)递推
11.如果b与c互素,则(a/b)%c=a*b^(phi(c)-1)%c
如果b与c不互素,则(a/b)%c=(a%bc)/b
对于b与c互素和不互素都有(a/b)%c=(a%bc)/b成立
图论:
1.最短路径
spfa,dijkstra,floyd
2.最小生成树
kruskal,prime
3.二分图最大匹配
hungarian
DAG的最小路径覆盖
最大独立集
最小点覆盖
4.强连通分量缩点
Tarjan
求桥,割点
5.最近公共祖先
倍增 Tarjan
6.无向图中最大/小环,最大平均环长度
7.拓扑排序
8.图中的组合问题
数据结构:
1.线段树
单点修改,区间查询
区间修改,单点查询
基于差分思想的区间统计:左端点+1,右端点-1
2.单调栈,单调队列
3.并查集
4.链式前向星
5.队列,栈,堆
6.优先队列
字符串:
1.hash 将串当成b进制树,对p取模
注:1.b必须比字符集大,否则某些字符串会完全等效 2.gcd(b,p)=1 3.可用自然溢出 4.对于一个串可以采用前缀和方法。
2.KMP
3.manacher
贪心法
搜索:
1.DFS
记忆化搜索
剪枝
2.BFS
动态规划:
1.线性DP
2.区间DP
3.树形DP
4.博弈DP
5.数位DP
6.状态压缩DP
STL:
1.stack
2.queue
3.set
4.map
5.priority_queue
6.string
7.sort/stable_queue
分治法:
1.二分查找
2.二分验证
倍增:
1.快速幂
枚举法:
十分重要,一道题目里面枚举的量决定了算法的优化方向!
模拟法
考试技巧:
1.位运算优化
2.打表
3.找规律,验证猜想
4.暴力程序对拍
5.根据数据范围思考算法,找对应的模型,然后再适当地变形,
比如增加枚举,排序,二分,
6.学会举反例
刚提出算法时。







浙公网安备 33010602011771号