专栏文章

P11982 题解

P11982题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@minqaxwe
此快照首次捕获于
2025/12/02 06:36
3 个月前
此快照最后确认于
2025/12/02 06:36
3 个月前
查看原文
根号重构,把所有修改了的点先拉出来,称之为特殊点。以下假设 n,qn,q 同阶。
对于剩余点,我们发现可能满足(假定所有修改了的点 Ai=0A_i=0)的一定是树形关系且有 O(n)O(n) 组这样的 (i,j)(i,j),找出来并建树。复杂度 O(nn)O(n\sqrt n)。(建树是容易的,使用单调栈之类的即可)
思考一个特殊点会对这些 (i,j)(i,j) 带来怎样的破坏。容易发现一个特殊点取某个值会导致树上某条链的所有二元组不符合要求。因此可以树剖线段树维护,这一部分复杂度 O(nlog2n)O(n\log^2n)
接下来考虑特殊点与非特殊点之间的符合要求二元组该如何统计。使用 priority_queue 提前计算出每个特殊点取每个值时在非特殊点的前驱后继,复杂度 O(nn+nlogn)O(n\sqrt n+n\log n)
对于特殊点之间的,每次询问时使用单调栈单独跑一遍。注意特殊点实际上前一个比他大的位置是特殊点和非特殊点的前驱位置较大的那个,后继同理。这一部分计算 O(nn)O(n\sqrt n)
总复杂度 O(nn+nlog2n)O(n\sqrt n+n\log^2n)

评论

0 条评论,欢迎与作者交流。

正在加载评论...