【考试总结】2022-06-17
sign
每个点有函数 \(\dfrac{x^{a_i+1}-1}{x-1}\) 而答案就是子树中每个点函数乘积在 \(deg\) 处的点值
预处理每个子树 \(\le \sqrt n\) 的点值,对于 \(>\sqrt n\) 的求解直接在子树里面暴力算
时间复杂度 \(\Theta(n\sqrt n\log V)\)
match
只会 \(\Theta(n^3)\):
注意到 \(f\) 数组的取值形式为 \(f_i=f_{i-1}+1\) 或者 \(f_i=0\) ,后者对应失配时直接跳回 \(0\)
枚举每对 \((l,r)\) 作为最大的 \(f_i\),注意此时相同的 \(S_{l_1,r_1},S_{l_2,r_2}\) 只在 \(l_1\) 最小值处计算 \(T\) 的数量
这样的钦定本质上是确定了 \(T\) 的一个前缀
由于钦定了最长的匹配,如果再在 \(S\) 中其它 \(\rm endpos\) 后一个字符不能是 \(T\) 的这个前缀后面的字符
同时预处理每个 \(S[l,r]\) 和整串 \(S\) 的 \(\rm KMP\) 数组,在模拟匹配的过程中每个失配位置不能有 \(\rm Border\)
tree
一对 \([l,r]\) 的 \(d(\rm LCA)\) 会给 \(L\le l,R\ge r\) 的询问 \([L,R]\) 贡献一种数值,那么对于同一个 \(l\) 和 \(\rm LCA\) 找到最小的 \(r\) 最好,那么树上启发式合并可以找到对应的 \(\Theta(n\log n)\) 个矩形
但是 \(\rm LCA\) 的 \(d\) 相同的矩形需要先求并再加一,不过本题矩形都是以 \((1,n)\) 为左上角的,可以使用单调栈轻松求出
此时需要进行矩形加的元素只有 \(\Theta(n\log n)\) 个,配合扫描线即可
总复杂度 \(\Theta(n\log^2n+m\log n)\)