最短距离模板

dijkstra算法: 求指定两点间的距离(不适用负边权),O(n^2) #include<iostream> #include<vector> #include<cstdio> using namespace std; const int INF = 0x3fffffff; const

 

最小生成树模板

prim 算法 按点算,适合于点少的情况 邻接矩阵,时间复杂度 o(n^2) //PTA公路村村通 #include<iostream> #include<cstdio> using namespace std; const int INF = 0x3fffffff; const int MAXV

 

取模运算

取模运算规则(不适合除法) <1> (a + b) % p = (a % p + b % p) % p <2> a>=b时, (a - b) % p = (a % p - b % p+p) % p ,a<b时,判断结果正负 <3> (a * b) % p = (a % p * b % p) % p

原码,补码和反码

计算机中,数字是按补码存的,补码可以直接相加减,在依次变为反码,原码,就是最后的结果。 一位二进制有八个数字,一个有符号定点数的最高位为符号位,0是正,1是副。 正数的反码和补码都是和原码相同。 负数的反码是将其原码除符号位之外的个位求反。 负数的补码是将其原码除符号位之外的各位求反之后在末位再加1

二叉树遍历

已知先序中序构树 #include <cstdio> #include <iostream> using namespace std; const int N = 50; int pre[N], in[N], post[N]; //存放先序,中序,后序的数组 int n;//树中元素

 

a^b%c

利用二进制来写,提供一种新思路,也更加简洁,迅速 //res=ab%c //将b转化为二进制,1即为有这一个数,0即没有 //例如9的二进制1001 即 23+20 //则a9=a8*a1; a23和a20 的乘积 //求a的b次方对c取模 //(ab)%c==(a%c)(a%b) int fun(

高精度运算

前言 在这里,我们约定,能用 int 表示的数据视为单精度,否则为高精度。所有函数的设计均采用带返回值的形式。 本文包含 高精度加法 高精度减法 高精度乘法 3.1 高精度乘高精度的朴素算法 3.2 高精度乘高精度 FFT 优化算法 3.3 高精度乘单精度 高精度除法 4.1 高精度除高精度 4.2

基础 

并查集模板

const int MAXN=1005; int father[MAXN]; int find(int x)//寻找根结点 { if(x==father[x])return x; return father[x]=find(father[x]); //压缩路径 } void merge

 

利用solo搭建个人博客

![](https://oss.rainsheep.cn/blog/100-1640662641-8b4.jpeg) 参考链接: [Solo 用户指南](https://ld246.com/article/1492881378588) [从零开始安装 solo 博客](https://hacpai