【古谷彻】算法模板(更新ing···)

目录

一、数学

1、逆元

(一)费马小定理/欧拉定理(快速幂)

2、组合数

(1)求组合数C(n,m)

方法一:阶乘+逆元+快速幂求组合数

方法二:记忆化搜索

方法三:递推公式

(2)组合数求概率 

3、高精度sqrt

 (1)二分法

(2)递加递减

4、快速幂

5、欧拉函数

 方法一:埃氏筛

方法二:欧拉筛

6、 线性筛

7、质数判断

8、欧拉常数

9、线性基 

形式一:数组

1、处理线性基

2、最大异或和

3、最小异或和

形式二:容器 

二、数据结构 

1、并查集

(1)普通并查集

优化一:路径压缩(会破坏树结构!!!

优化二:启发式合并(不压缩路径,保持树结构!!!

形式1:按高合并

形式2:按集合大小合并

优化三: 压缩路径+启发式合并

(2)带权并查集

(3)种类并查集——维护循环对称关系 

两种关系:

三种关系: 

(3)可撤销并查集(看不懂。。。 

2、启发式合并

3、字符串哈希

形式一:单哈希

4、线段树 

(1)单点修改,区间查询

(2)区间修改,区间查询

5、线段树进阶

(1)线段树区间染色 

6、树状数组 

(1)单点修改,区间查询

(2)区间修改,单点查询 

(3)求逆序对数量

7、分块 

三、图论

1、图的存储

(1)邻接矩阵

(2)邻接表

(3)链式前向星

2、二分图最大匹配

 (1)匈牙利算法

方法一:邻接矩阵

方法二:链式前向星(注意数组及边的标号问题!!!) 

(2)KM算法 

3、最小点覆盖

4、最短路

(1)Dijkstra算法

方法一:链式前向星+优先队列

(2)Floyd算法 

(3)Bellmon-Ford算法 

(4)SPFA算法 

5、拓扑排序 

四、字符串

五、STL

1、优先队列—priority_queue

六、输入与输出

1、提高效率

(1)关闭同步

(2)开启O优化

你可能感兴趣的:(算法,c++,学习,算法竞赛)