摘要:
代码如下 cpp include using namespace std; typedef long long LL; const LL mod = 998244353, g = 3, ig = 332748118; inline LL fpow(LL a, LL b) { LL ret = 1 % 阅读全文
摘要:
线性基主要用于解决子集异或问题。 cpp include using namespace std; typedef long long LL; struct linear_basis { vector s; int n, zero; linear_basis(int _n) { n = _n; s. 阅读全文
摘要:
题目大意:给定一个 N 个点,M 条边的无向图,边有两个边权 a, b,求从 1 号节点到 N 号节点路径的两个权值和的最大值最小是多少。 题解: 对于有两个属性的结构的最优化问题,可以考虑先按照其中一个分量进行排序。接着从小到大枚举这个有序的分量,计算以当前枚举到的值为这一分量的最大值时,全局的最 阅读全文
摘要:
后缀自动机是一个能够接受母串所有后缀的最简自动机。 其中,每个节点代表一个字符串集合,该集合中所有的字符串均有相同的 $right$ 集合。 各个节点之间根据 $right$ 集合的关系可以组织成一棵树形结构,称为 $parent$ 树。 后缀自动机最多有 $2 n 1$ 个节点。 代码如下 cpp 阅读全文
摘要:
$$ PA=E, PE=P $$ 按照定义,P 即为 A 的逆矩阵。矩阵乘法可以看作是对右边矩阵的一个线性变换,即:A 经过 P 的线性变换变成了 E,E 经过同样的线性变换变成了 P。因此,只需要在高斯消元 A 矩阵,将 A 变成单位矩阵的同时,维护一个单位矩阵,做与 A 完全相同的线性变换即可得 阅读全文
摘要:
题目大意:给定一个二元组集合A{}, 一个三元组集合B{}, 定义 C 为 A 和 B 在 {b = e} 上的连接,求 C 集合中凸点的个数,即:最值点的个数。 题解: C 为一个三元组集合,求凸点的个数问题等价于三维偏序问题,去重之后可以直接计算。 不过,发现若直接暴力进行连接运算,最坏情况下会 阅读全文
摘要:
代码如下 cpp include using namespace std; typedef long long LL; const int mod = 51061; struct node { node l, r, p; int rev, val; LL sum, add, mul, sz; nod 阅读全文
摘要:
题目大意:给定 N 个点,M 条边的无向图,支持两种操作:动态删边和查询任意两点之间路径上边权的最大值最小是多少。 题解: 引理:对原图求最小生成树,可以保证任意两点之间的路径上边权的最大值取得最小值。 证明:任取两点 x, y,若 x, y 的路径上最大值最小的边不在最小生成树的路径上,可以将那条 阅读全文
摘要:
$LCT$ 是解决动态树问题的一种强力的数据结构,这种数据结构维护的是由若干 $splay$ 节点构成的森林。 $LCT$ 结构中采用了实链剖分的策略,即:将树边划分为实边和虚边,其中实边指的是 $splay$ 节点通过节点中儿子指针相连的边,虚边指的是通过父节点指针相连的边。实边所构成的所有点在同 阅读全文
摘要:
题目大意:初始给定 N 个点,支持三种操作:两点之间连边;一个点与一个连续区间编号的点之间连边;一个连续区间内的点和一个点连边,求执行 N 次操作之后的单源最短路。 题解:学会了线段树优化建图。 发现若暴力进行连边,时间和空间都会被卡到 $O(n^2)$,直接起飞。 发现连边的点的编号是连续的,结合 阅读全文