关于板子,其实之前我是很抵触的,认为这种不理解原理而直接套模板的行为并不能使人进步;
后来发现,光靠脑子去想,很多地方理解起来还是比较费劲的,在略知大概之后抄几遍板子,反而是更容易帮助我们理解算法的原理,就像是小时候背古诗,明明很多都不懂,却一定要死记硬背下来,练得多了,自然也能体会到其中的奥妙;
这大概也算是“纸上得来终觉浅,绝知此事要躬行”吧;
搜索
深度优先搜索
1 | int m,n; //m*n的图 |
广度优先搜索
1 |
|
最短路
弗洛伊德
1 |
|
迪杰斯特拉
1 |
|
贝尔曼
1 |
|
并查集
1 | int n; //n个点 |
最小生成树
克鲁斯卡尔
1 | struct edge |
普里姆
1 |
|
数论
欧几里得定理
1 | int gcd(int a,int b) |
线性筛素数
1 |
|
快速幂
1 | int qpow(int a,int b) |
矩阵快速幂
1 |
|
动态规划
最长上升子序列(nlogn)
1 |
|
字符串
KMP
1 |
|
线段树
1 |
|