专栏文章
嘟嘟嘟
P9168题解参与者 13已保存评论 12
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 12 条
- 当前快照
- 1 份
- 快照标识符
- @minn5qdv
- 此快照首次捕获于
- 2025/12/02 05:08 3 个月前
- 此快照最后确认于
- 2025/12/02 05:08 3 个月前
这个题可以单 。
默认大家会 做法。考虑我们是怎么加入一个元素的:把他加入某个数据结构,然后找到最深的子树内元素个数大于子树大小的节点,删除子树内最小的元素。
注意到我们只修改了两个元素,而且答案显然和加入顺序没关系,那么理论上我们删除一个在答案里的元素的时候也只会加回来一个。我们维护一个不在答案里的元素的数据结构,删除一个元素后显然只有所有祖先都没满的元素才能加回来,我们加回来最大的元素。
我们考虑在静态 toptree 上维护这个东西。我们维护在/不在界点路径上的 子树大小减子树元素个数 的最小值(这个肯定需要非负),同时维护是否取到两个最小值的四个状态的最大元素,这个显然是可以合并的。对于加入操作,我们可以顺便维护两个最深的最小值位置,然后在 DFS 序上使用线段树维护最小的已加入的元素。
这样我们就做到了单 并且还是在线的。code
相关推荐
评论
共 12 条评论,欢迎与作者交流。
正在加载评论...