重新整理过去的板子

一、图论部分

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 }
gcd
1 int gcd(int a, int b)
2 {
3     return b?gcd(b,a%b):a;
4 }
递归简洁版gcd
 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 }
exgcd

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 }
fast_power

(之前那个位运算版洛谷神TM WA一半点)

3. 期望

\begin{equation*} E \xi = \sum_{i=1}^n x_ip_i\end{equation*}

三、数据结构部分

1. stack;

2. queue;

3. Union-Find-Set;

4. BIT;

5. SegmentTree;

6. Block;

7. Mo's Algorithm.

四、字符串

1. KMP

 

posted @ 2017-06-22 10:04  baka  阅读(123)  评论(0编辑  收藏  举报