2023.8.22
有点超模了。签完到跑路。记下做法。
T2
有字符串 \(S\),\(T\),且 \(|S|=n\),\(|T|=m\),均由小写字母构成。
一个匹配指 \(T\) 作为子序列在 \(S\) 中出现,记匹配位置为 \(pos_1,pos_2,\dots,pos_m\),该匹配的权值为 \(\displaystyle\sum_{i=1}^{m}A_{pos_i}\).
每次问 \(S[l:r]\) 与 \(T\) 的匹配权值总和,输出它们对 \(\rm 1e9+7\) 取模后的异或和。
\(n\le 2\times 10^5\),\(m\le 30\),\(q\le 10^6\).
emiliatanmajitenshi
\(A_i=1\)
这种情况即求匹配数量 \(\times m\).
假设询问的 \(l=1\).
记 \(f_{i,j}\) 为 \(i\) 处匹配了 \(j\) 个的方案数,显然
容易写出转移矩阵
当 \(l\not=1\) 时我们要的就是一段区间的矩阵的乘积。
线段树维护能做到 \(O((n+q)\log n\cdot m^3)\).
矩阵求逆
简单来说求法如下:
-
构造 \(n\times 2n\) 的矩阵 \((A,I_n)\).
-
用高斯消元化为最简形 \((I_n,A^{-1})\),得到 \(A^{-1}\),若最简形左半部分非 \(I_n\) 则 \(A\) 不可逆。
维护矩阵的前缀积和前缀积的逆,时间复杂度 \(O((n+q)m^3)\).
询问答案的时候只关心 \((A\times B)[0][m]\) 这样的,前缀积和逆只有一行或一列有用。
时间复杂度 \(O(nm^3+qm)\),空间 \(O(nm)\).
现在矩乘和求逆的复杂度不够理想。
矩阵初始非 \(0\) 项个数为 \(O(m)\),矩乘后变成 \(O(m^2)\).
先把当前转移矩阵的逆求出来,共 \(26\) 种。
接着就是人类智慧了。
任意 \(A_i\)
显然有
转移矩阵系数变成了二项式。
矩阵种有用的项仍为 \(O(n)\),转移 \(O(n^2)\).
转置原理
记 \(A^T\) 为 \(A\) 的转置。
\(A\) 和 \(A^T\) 都对应着一种 \(O(n^2)\) 的操作。
这个 \(O(n^2)\) 跑不满。总复杂度不知道。
T3
仙人掌上的负载平衡问题。
\(n\le 10^5\),\(n-1\le m\le 2n-2\),\(0\le w_i,s_i\le 10^4\).
\(w_i\) 为边上 \(1\) 单位资源的转移费用,\(s_i\) 为点 \(i\) 的初始资源量。
图为树
令 \(a_i=s_i-\bar{s}\),目标 \(a_i=0\).
考虑树形 DP:
图为环
不妨记环上节点标号为 \(1,2,\dots,n\).
记 \(x_i\) 为 \(i\) 向 \(i-1\) 的运输量(为负则反向),那么
那么
可以记 \(x_i=x_1-X_i\),答案为
把这个绝对值复制 \(w_i\) 遍,最后 \(x_1\) 取中位数即可。时间复杂度 \(O(n\log n)\).
图为基环树
先将非环上的点按树上做法处理,就只剩下环了。
图为仙人掌
将环处理出来计算贡献并转移。具体不太会。
T4
对于 \(i\in[2,n]\) 向 \(\frac{i}{\operatorname{minp}(i)}\) 连边,问树上点对距离总和。
\(n\le 10^{10}\).
考虑对每个质数计算其贡献。
显然的是两个树的 LCA 是它们质因数分解后的表达式的 LCS。
LCS 部分贡献为 \(0\),剩余部分贡献为 \(1\).
根号分治
Part1
\(>\sqrt{n}\) 的质数只会出现一次,一定位于乘积末尾,贡献与其是否在两个数中同时出现有关。
这一档的答案是
这个可以用 Min_25 筛做。
Part2
先搞懂那个 Min_25 筛是怎么搞的再说。