07 2021 档案

摘要:乘法逆元总结: 算单个数的逆元: 递推式: inv[i]=(mod-mod/i)*inv[mod%i]%mod; 这种做法适用于递推。 当模数为质数时: inv[i]=qmi(i,mod-2); 不是质数时,我们运用 \(exgcd\) 来计算。 阶乘乘积: inv[n]=qmi(mul[n],mo 阅读全文
posted @ 2021-07-18 09:13 Evitagen 阅读(167) 评论(0) 推荐(0)
摘要:拓展中国剩余定理 引入 我们知道中国剩余定理的约束条件:模数必须全都互质。 那么当模数不互质的情况该怎么办呢?这时候就要用到 拓展中国剩余定理 实现 形如: \(x\equiv a\pmod b\) 我们可以转换成: \(ax+b=x\) 这样叠加起来,就有: \(a_1x_1+b_1=x\\ a_ 阅读全文
posted @ 2021-07-16 16:23 Evitagen 阅读(102) 评论(0) 推荐(3)
摘要:二维/三维偏序 定义: 形如 \(x_i<x_j\) 且 \(y_i<y_j\) 之类的约束条件,我们可以称为二维偏序。 逆序对就是一个非常经典的二位偏序。 解决: 如果按照暴力想法,我们 \(O(n^2)\) 的时间枚举 \(i,j\) ,这样太慢了。 处理第 \(i\) 位时,我们已经处理过 \ 阅读全文
posted @ 2021-07-15 15:58 Evitagen 阅读(1934) 评论(1) 推荐(8)
摘要:\(Tarjan\) 定义: 强连通:指图中任意两个节点连通 强连通分量:极大的强连通子图 割点:去掉这个点后增加强连通子图的个数(就是连接两个强连通分量的点) 作用: 求强连通分量(求环): 我们发现,每个图上的环都被缩成了一个点,这些点集即组成了环,因此记录这个点集即可找到环 求割点: 割点在代 阅读全文
posted @ 2021-07-12 18:50 Evitagen 阅读(90) 评论(0) 推荐(0)
摘要:矩阵树定理 拉普拉斯矩阵: 定义: 设无向图有 \(n\) 个节点,拉普拉斯矩阵 \(L\) 是一个 \(n*n\) 的矩阵。 \(L_{i,i}\) 的值为节点 \(i\) 的度数。 \(L_{i,j}\) 的值为节点 \(i\) 和节点 \(j\) 之间相连的边数的相反数。 例如下图: 这个图各 阅读全文
posted @ 2021-07-02 09:34 Evitagen 阅读(425) 评论(0) 推荐(2)
摘要:点分治 引入: 我们对于一些树上的路径个数问题,比如距离为 \(k\) 的点对一共多少,有节点到某个节点距离为多少..... 这种题一般来说都需要 \(O(n^2)\) 的时间,但是点分治可以将其降到 \(O(n\log n)\)。 做法: 点分治实际上就是将每一个点进行对儿子的搜索,但是寻找的儿子 阅读全文
posted @ 2021-07-01 19:40 Evitagen 阅读(100) 评论(0) 推荐(1)
摘要:长链剖分 定义: 长链剖分主要用于解决两点之间链的问题。 实现: 思路与重链剖分相同,但是选择重儿子时选择子树深度最大的儿子。 代码: void dfs1(int x,int fa){ d[x]=d[fa]+1; f[x]=fa; for(int i=head[x];i;i=nxt[i]){ int 阅读全文
posted @ 2021-07-01 10:27 Evitagen 阅读(261) 评论(0) 推荐(1)