CF1515H口胡

Posted 欢迎来到lmppの小窝

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CF1515H口胡相关的知识,希望对你有一定的参考价值。

居然一下就做出来了。。。不知道是不是对的/fad

考虑操作的本质,首先将所有元素插入线段树中。

来依次考虑每一种操作:

  1. 区间与

注意到这个操作类似将某些节点的右儿子合并到左儿子上,而一个节点最多被合并一次,所以可以暴力合并,如果没有兄弟那就打上标记。

  1. 区间或

和前者类似。

  1. 区间异或

这个操作是交换左右儿子,所以直接打上标记,前面没有兄弟的时候也可以打上相同的标记。

  1. 询问

这不是用脚维护一下就好了吗。

但是注意到这只对全局操作管用,所以考虑通过某种方式使得区间也管用。

首先将整个区间拆分成线段树上的区间。

对于一个区间,先进行上面的合并操作,再按照更高的位合并到别的区间上去。

但是如果是异或就很麻烦了。所以考虑将被修改的节点全部拉出来,修改完毕后再插入回去。

至于实现,我们注意到一次是对同一层的一车区间干相同的事。所以不妨对整颗线段树 BFS,然后在 BFS 序上开一颗平衡树,来维护没有被合并的点。

然后,将左右儿子合并的操作反过来,最后统一将区间打上异或标记。

一个节点会被合并 \\(O(\\log V)\\) 次,所以会被插入平衡树 \\(O(\\log V)\\) 次,所以复杂度应该是 \\(O(n\\log^2V+q\\log n)\\) 的。

以上是关于CF1515H口胡的主要内容,如果未能解决你的问题,请参考以下文章

CF794F

210818构造模拟赛挂分记

Bubble Cup 11 - Finals [Online Mirror, Div. 1] 体验记 + 部分题解

BZOJ 口胡记录

LGP5289口胡

迷茫之中的口胡