专栏文章
题解:P10284 [USACO24OPEN] Splitting Haybales P
P10284题解参与者 3已保存评论 4
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 4 条
- 当前快照
- 1 份
- 快照标识符
- @miqowmzu
- 此快照首次捕获于
- 2025/12/04 08:20 3 个月前
- 此快照最后确认于
- 2025/12/04 08:20 3 个月前
插入标记回收算法
本算法在 lxl 讲课时提出。然后立马就被放到了数据结构专场的签到题。
解决的问题是:
次询问 依次经过 种操作的结果。
第 种操作是 这样。可以离线。
算法流程如下:
- 插入数据。在 时间开始前把 加入集合 中。
- 标记。在 时间执行 。
- 回收数据。在 时间开始前把 丢进去的数据从 中回收。
难得 lxl 讲这么简单的算法。
例题
PKUSC 的题(澡堂):。
显然 中节点保持单调顺序。直接用线段树二分定位线段树区间加即可。时间复杂度 。
平衡树合并技巧
平衡树合并是在没有一些奇怪操作的 FHQ-Treap 上的合并两颗不需要满足任何条件的 FHQ-Treap 的方法。
一个暴力
假设我们要从 合并到 ,启发式后直接一个一个合并。
然而这样复杂度是错的,因为我们可以不断分裂合并。
一个暴力?
直接按照 的键值分裂 。然后把 的两边放到 的两边递归合并。
需要注意的是要求 也就是按照优先级决定谁合并谁。其实理论上按照大小合并会更优但是其实差不多。
复杂度证明
假设 同阶。上述“暴力”的时间复杂度为 。
证明考虑设计势能函数 表示 内部相邻两点的值域差对数的和。
设值域连续段有 个,这里的连续段指的是合并 两颗平衡时后新树的值总是成 这样。则 。
合并时有值域连续段内总有 个节点的势能减少 。而上述“暴力”的复杂度最高只有 。
显然分裂不增加势能。
友情提示

例题
例题:Ynoi TEST_100。
用刚才两个算法。则相当于对 的大小关系分讨后使用平衡树合并在一起。
并不是这样的,因为强制在线限制了第一个算法。
考虑分块。因为值域很小所以我们可以每一段内暴力平衡树合并跑出 的答案。
查询时散块暴力,跳整块直接用刚才平衡树合并时跑出来的结果即可。
同阶。时间复杂度 。
例题
用刚才提到的两个算法。插入标记回收以后,按照 分裂以后分别打加法标记并合并。
同阶。时间复杂度 。
相关推荐
评论
共 4 条评论,欢迎与作者交流。
正在加载评论...