基础算法总结

基础算法总结

对于算法总结,在证明等方面不做深究(大多数还未深刻理解),主要记录:结论,使用条件,适用问题等,并附上一些总结的较好的博主的博客。由于内容较多,时间少,先罗列清单,慢慢补上。

数学

Lucas定理(用于m,n较大时,求C(m,n)%P)
Miller Robin算法(大素数判定)
欧拉函数(求不大于n且与n互质的数的个数)、费马小定理、欧拉定理(用于求逆元)
扩展欧几里得算法(用于解二元一次方程,求逆元等)
欧拉降幂公式(用于b较大时,求a^b%mod):
康拓展开(求全排列中的位次)
容斥原理(用于计数)
划分数
离散化
矩阵快速幂

博弈论

Bash博弈
Nim博弈
Wythoff博弈
Fibonacci博弈
SG函数

字符串

KMP算法(字符串匹配)
Manancher算法(最大回文串)
AC自动机(多模匹配)
字典树

图论

带权并查集
Dijkstra最短路
Bellman-Ford最短路
Tarjan算法(求强连通分量)
二分图(关于其若干性质)
匈牙利算法(二分图匹配)
LCA(最近公共祖先的若干算法)

数据结构

线段树
树状数组
主席树
Treap

动态规划

背包模型DP
数位DP
区间DP
树形DP

零碎技巧或结论

快速乘(O(1))
手动扩栈
读入/输出优化
LIS(O(nlogn))
LICS(O(nm))

工具

随机数生成对拍
JAVA实现高精

posted @ 2018-07-25 00:23  __orange  阅读(345)  评论(5编辑  收藏  举报