基础莫队
移动端点复杂度一般为 O ( 1 ) O(1) O(1)
P1494 [国家集训队] 小 Z 的袜子
板子题
代码
P2709 小B的询问
平方技巧
(
x
+
1
)
2
−
x
2
=
2
x
+
1
(x+1)^2-x^2=2x+1
(x+1)2−x2=2x+1
每次增加/减少
2
x
+
1
2x+1
2x+1即可
代码
P4396 [AHOI2013]作业
套一个值域分块平衡复杂度
代码
树上莫队
利用欧拉序帮助莫队上树
对于一个路径u-v
如果u和v是父子关系,那么区间就是(st[u],ed[v])这种的
否则就是(st[u],st[v])
序列中出现两次就是抵消掉的部分,所以可以记录一个vis,如果为1就是del操作,如果为0就是add操作,之后再把vis^=1即可
SP10707 COT2 - Count on a tree II
板子题
代码
CF1479D Odd Mineral Resource
树上莫队后,统计答案时,套上一个值域分块,对于整块的,我们每次修改把奇数的都放进这个块的栈中,需要时候拿出来检验一下,因为修改只有 n n n\sqrt{n} nn次,所以均摊下来查询也是 n n n\sqrt{n} nn
代码
反正我是卡不进去5s。。。。
待续…
这篇博客探讨了在解决复杂度问题时如何运用树上莫队算法,结合平方技巧和值域分块策略来优化移动端点的复杂度。通过实例分析了P1494、P2709和P4396等题目,详细解释了如何进行路径优化,并提供了相关代码实现。此外,还介绍了如何在树上莫队后统计答案时,利用值域分块进一步提高效率,以适应大规模数据。尽管作者尝试将算法优化到5s内,但仍然存在挑战。
1万+

被折叠的 条评论
为什么被折叠?



