请升级 HydroOJ 到 4.16.0 以上版本以正常使用此插件功能。
1 条题解
-
0
这个题应该有一档不带修的部分分,但是我懒了。
考虑一下上面这个咋做。首先平方这个函数的凸性是显而易见的,所以我们每次一定会找到一个补给匮乏度最大的路径上的点给它 -1。这个形式不太优秀,转化一下变成找到一个最小的阈值 使得可以把所有 的变成 ,最后把尽可能多的 变成 。这个 是可以二分的,主席树即可。
如果尝试在线维护带修版本,至少也会带根号或者多带几个 log,视情况可获得两万和五万的部分分。
疑似有一个牛逼数据结构能在线不多 log,但我也搞不懂这个。
考虑离线对 做整体二分。把修改视作删除再增加,那么考虑某个二分中点 时只有涉及的值大于 的操作才有用。我们按照时间顺序扫过所有仍然有效的操作,遇到询问操作时需要知道一条路径上大于 mid 点的个数与和,这个可以用两个树状数组维护。由于当二分结束后需要求出答案,还应该再维护一个平方和,这就是三个 BIT。
一次判断结束后,涉及的值大于 mid 的删除/增加操作和 的询问操作向右递归,其它向左递归,复杂度是对的。
复杂度 2log,由于两个 log 来源是整体二分和 BIT,常数不大,可以轻松通过。
出题人的小巧思:本题答案需要 int128,如果你没有用会获得 0 分。不过题面里都提醒大家了,应该没人爆零吧?
信息
- ID
- 60
- 时间
- 2500ms
- 内存
- 512MiB
- 难度
- 9
- 标签
- (无)
- 递交数
- 51
- 已通过
- 6
- 上传者