社区讨论
关于使用线段树完成区间翻转的一种做法,求证明或证伪
灌水区参与者 5已保存回复 4
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @lu6rzbob
- 此快照首次捕获于
- 2024/03/25 17:58 2 年前
- 此快照最后确认于
- 2024/03/25 20:20 2 年前
很久之前想到的一个使用线段树实现区间翻转的做法,感觉时间复杂度很假,但是就是能过掉
P3391 【模板】文艺平衡树,甚至能在此基础上实现区间修改,觉得很假,特意来问一下。
做法大致是:对于一个节点的翻转,打一个翻转 tag,然后对于其所有子树,交换其左右儿子。
对于一个区间的翻转,找到这个区间中所有节点,将这些节点打上翻转 tag,将这些节点前后两两交换。
图示如下:

如果线段树中出现深度大于 (一个常数)的节点,则将线段树 重构。
时间复杂度最坏大概是 ?
不太会分析,大致情况就是每一次重构之后进行若干次操作,每一次将深度翻倍。
感觉很假,有什么卡掉的方法吗,又或者是这种做法是对的?
代码扔在这里。提前谢谢各位。
回复
共 4 条回复,欢迎继续交流。
正在加载回复...