首黑纪念。
2026-03-15 11:36:52
发布于:广东
这题怎么感觉要降。
https://www.luogu.com.cn/problem/P6272
难度:6.0 / Medium
题解
假设 ,计算时间复杂度等时所有 用 代替。
首先思考如何表示 。
我们可以动态开点,每个数 分别指向 的下标,就可以递归表示 。
查询显然用线段树维护。
现在考虑如何比较 的大小。
考虑维护一个平衡树,表示出现的数的排名。
现在插入一个数。由于每次插入会改变后面所有 的排名,所以可能改变所有 中 的排名,所以不能重新标号,每次比较只能通过动态查询排名得出。一次插入会比较 个数,每次都要查询 次排名,一次查询是 的,所以插入一个数是 的。
而更新线段树也需要比较 次,所以查询也是 的。
总时间复杂度 ,但只有 1s 时间,常数大过不了。
发现瓶颈在于必须动态查询排名才能比较大小。考虑用一种更快的方法比较。
我们可以用实数代替整数排名。这样,只需要将排名设为两数的中间值,其它排名都不用变。
但这样如果每次修改的数都比原来的小,最后的实数就是 ,显然任何浮点数类型都存储不下。
注意到按照实数加入顺序建树,建出来的是一颗与原树(如果不进行平衡操作)完全一样的 BST。所以考虑在原树做平衡操作时,同时改变实数排名降低精度。显然最简单的办法就是暴力重构。
那替罪羊树可不可以做呢?
正常情况下,精度不超过 即可。当然,这里由于不需要判断 eps(因为完全相等的浮点数进行相同的运算结果一定完全相等),所以精度要求还可以更高。不过这里还是看做 。
替罪羊树的最大深度是 。
所以此时最高精度为 。
当 取 时,精度约为 ,完全够用。
时间复杂度 。
record:https://www.luogu.com.cn/record/267342439
全部评论 12
切黑是如此重要的人生大事,等我会切黑了我要把一堆黑题代码全记下来然后一天全调好交上去
昨天 来自 广东
1见证历史了。
昨天 来自 广东
0我去,这么简单?
那我还学定长分块和 短路干啥
昨天 来自 广东
0恭喜
昨天 来自 广东
0ddd
昨天 来自 广东
0至今仍不知道为什么没有人指出精度是 而不是
昨天 来自 广东
0去指出一下,然后管理组提示:题解存在部分事实性错误
昨天 来自 广东
0
d
昨天 来自 广东
0d
2天前 来自 广东
0黑题 Medium 说是,但是这题看上去很棒加入题单了/bx
2天前 来自 广东
0思维难度不高吧
2天前 来自 广东
0不知道
2天前 来自 广东
0感觉思维中等偏上了
2天前 来自 广东
0
感谢大佬提供此题
5天前 来自 浙江
0你又做不出来,ctj 吗
昨天 来自 浙江
0
d
5天前 来自 浙江
0还有我的定数集体降了一级,按原定数是 6.9 / Medium
5天前 来自 广东
0d
6天前 来自 广东
0

























有帮助,赞一个