处理细节
历来不确定的东西
- ST表
注意细节:
1 | int t = log(n) / log(2) + 1; |
- unsigned long long 与 long long
unsigned long long
min: 0
max: \(2^{64} - 1\)
long long
min: \(-2^{63}\)
max: \(2^{63} - 1\)
- 逆元
1 | ifac[1] = 1; |
- 直径
树上最长的一段距离.
1 | inline void bfs(int s) |
- 重心
定义:对于树上的每一个点,计算其所有子树中最大的子树节点数,这个值最小的点就是这棵树的重心
性质:以树的重心为根时,所有子树的大小都不超过整棵树大小的一半
1 | inline void getroot(int x, int fa) |
- 树剖求lca
主要就是少处理dfn.别的和树剖一模一样
1 | inline void dfs1(int x) |
- exgcd
式子自己推推就好,主要是这里值的一步步代入.
1 | inline void calc(int a, int b) |
- 差分约束与负环
好像有两种建边方式都可以.
我只写一种:
如果\(a - b >= c\),意味着\(a >= b + c\)
所以由b出发连一条向a边,边权为c
然后跑最长路就可以了
判断负环两个细节:
必须在判断vis里面判断
必须判断次数是否大于n
以小k的农场一题为例,代码如下:
1 | inline void spfa() |
- 筛各种东西
首先是筛\(\phi\)
定义:
\[ \phi(i) = \sum_{i=1}^n\gcd(i,n)==1 \]
1 | inline void pres_dou() |
其次是筛\(\mu\)
定义:
\[ \mu(n)= \begin{cases} 1&n=1\\ 0&n\text{ 含有平方因子}\\ (-1)^k&k\text{ 为 }n\text{ 的本质不同质因子个数}\\ \end{cases} \]
1 | inline void pres_dou() |