一、图论部分
1. Floyd;
2. Dijkstra;
3. SPFA;
4. Kruskal;
5. LCA.
二、数论部分
1. gcd, exgcd;
1 int gcd(int a,int b) 2 { 3 int temp; 4 while(b) 5 { 6 temp = b; 7 b = a % b; 8 a = temp; 9 } 10 return a; 11 }
1 int gcd(int a, int b) 2 { 3 return b?gcd(b,a%b):a; 4 }
1 int exGcd(int a, int b, int &x, int &y)//x, y必须传引用 2 //解不定方程:x,y为方程的一组解 3 { 4 if(b == 0)//扩欧定理 5 { 6 x = 1; 7 y = 0; 8 return a; 9 } 10 int r = exGcd(b, a % b, x, y); 11 int t = x; 12 x = y; 13 y = t - a / b * y; 14 return r; 15 }
2. 快速幂.
1 #include<iostream> 2 using namespace std; 3 typedef unsigned long long ull; 4 ull power(ull a, ull b, ull c)//快速幂 5 //a 底数 b 指数 c 模数 6 { 7 ull ans=1, t=a; 8 while (b>0) 9 { 10 if (b%2 == 1) 11 ans = ans * t % c; 12 b/=2; 13 t = t * t % c; 14 } 15 return ans; 16 }
(之前那个位运算版洛谷神TM WA一半点)
3. 期望
egin{equation*} E xi = sum_{i=1}^n x_ip_iend{equation*}
三、数据结构部分
1. stack;
2. queue;
3. Union-Find-Set;
4. BIT;
5. SegmentTree;
6. Block;
7. Mo's Algorithm.
四、字符串
1. KMP