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.学会举反例

刚提出算法时。

 

posted @ 2016-11-16 11:26  cnblogsLSY  阅读(666)  评论(0)    收藏  举报