暑假集训学习笔记(1):lxl DS Day 1
lxl DS Day 1
莫队本质
子树补的回滚莫队 O(nlogn)
P7124 [Ynoi2008] stcm
性质1: 考虑轻儿子的子树和为
证明: 考虑每个结点会对多少个轻祖先做贡献, 也就是重链个数, 考虑每个节点到根节点重链条数为
所以对于一条重链, 如果我们已经插入了链头的补集, 那么我们就可以直接暴力插入和删除求出这条重链上所有点的答案, 然后对于重链上轻儿子的答案, 我们可以如果可以得到轻儿子的补集, 就可以递归下去了。
考虑对于重链上所有轻儿子怎么搞, 可以对于所有轻儿子建出霍夫曼树, 然后遍历每个叶子节点, 可以证明轻儿子子树和为
证明: 考虑每个叶子节点对祖先的贡献, 考虑这是一课霍夫曼树, 每往上走一层子树大小至少翻倍, 所以树高
邻域相关
邻域查询
树分块
P2325 [SCOI2005] 王室联邦
考虑这是树分块的板子题,构造过程:
- 从节点
dfs搜索下去, 考虑 为省会, 所以遍历了超过 节点就直接分为一块, 直到剩下一小坨的节点数小于 , 把 也带上, 分给 的 。 - 对于
, 也是递归上述过程。
有向邻域不删除莫队
P8204 [Ynoi2005] tdnmo
考虑树上邻域查询不删除莫队, 考虑树分块, 类似王室联邦的构造, 但是为了保证簇只有两个界点, 所以考虑多加一个限制就是, 如果最后剩下的儿子大于等于2个, 所以直接令
然后考虑回滚莫队, 所以考虑
考虑在簇路径上的点, 直接回滚到下界点, 跑回滚莫队就行了。
平面分块
半平面数点(数据随机)
P4475 巧克力王国
半平面数点, 可以用kdt, 但是数据不随机会被卡掉, 并且数据随机时, 可以有这个做法:
对于平面分块, 分成
P9996 [Ynoi2000] hpi
同样可以半平面数点, 对于右上/左下的半平面, 统计每个右上/左下的点数。对于右下/左上的半平面, 容斥一下即可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App