【考试总结】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)\)

posted @ 2022-06-17 19:04  没学完四大礼包不改名  阅读(88)  评论(0)    收藏  举报