题解 [BZOJ3307] P4556 [Vani有约会]雨天的尾巴 /【模板】线段树合并
传送门
题意
一棵
每次操作可以使
查询每个结点最多物品的物品编号。
分析
对于每次操作,我们要更新从
我们将一个查询分为两个链,将其上的点的父亲标记该颜色 -1,其下的点标记颜色 +1。
由于我们要输出每个树结点的答案,又使我们想到了我们的树上启发式合并 DSU。
但是问题又有了,我们该如何在增加后查询我们的答案呢?
肯定不能直接用
再分析我们的要求:可以做到单点修改增加或减小,可以维护区间的最值与其
整个过程已经结束,接下来还有几个要点。
- 我们的答案可能存在是 0,于是我们可以将下标右移,这样我们就可以完成 0 的答案。
- 我们的
可能很大,我们还需要离散化。
总结起来,我们要完成的操作有:
- DSU
- 倍增查询 LCA
- 一个简单的维护最值线段树
- 离散化
那就让我们以
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步