3.20做题记录(莫队复习)

这篇博客探讨了在解决复杂度问题时如何运用树上莫队算法,结合平方技巧和值域分块策略来优化移动端点的复杂度。通过实例分析了P1494、P2709和P4396等题目,详细解释了如何进行路径优化,并提供了相关代码实现。此外,还介绍了如何在树上莫队后统计答案时,利用值域分块进一步提高效率,以适应大规模数据。尽管作者尝试将算法优化到5s内,但仍然存在挑战。

基础莫队

移动端点复杂度一般为 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)2x2=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。。。。

待续…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值