1 条题解
-
0
自动搬运
来自洛谷,原作者为

H_Kaguya
AFO搬运于
2025-08-24 22:47:23,当前版本为作者最后更新于2023-05-27 20:38:23,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
单纯的追求优秀的复杂度。
如果只是想做完这道题可以忽略本文。前置知识:整体二分。
首先,这道题的经典做法是树上主席树,时间空间都是 。
但事实上这道题可以使用整体二分做到 的时间复杂度和 的空间复杂度。
整体二分的话还是常规思路,我们去枚举一个值 ,即只在 的时候使用银币。
如果想要做到 的复杂度,那么复杂度应该是 ,也就是链求和的部分要做到线性。
不能使用带 的数据结构维护,那么就考虑树上前缀和。我们需要保证每次只对有用的点做前缀和。
所以容易想到虚树。具体的,我们可以把所有费用在当前二分区间内的点拿出来建虚树。
同时,对于每个树链询问,都可以差分成 个树上前缀询问。
把这些点也放到虚树上。
分治的时候把点按照费用大小递归到两边即可。实现细节的话,首先需要把所有的点按照 DFN 序排好,分裂的时候不打乱相对顺序以避免建虚树的时候排序。
另外,需要接一个 LCA,使用单调栈建虚树。常数很大,仅分析理论复杂度就好了。
- 1
信息
- ID
- 8728
- 时间
- 4000ms
- 内存
- 1024MiB
- 难度
- 6
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者