P6587 超超的序列 加强
P6587 超超的序列 加强
题目描述
给定一个序列
思路
考虑用线段树维护。但是本题的难点在于,所有的操作都不是直接对区间的操作,我们要想办法把其变成对区间的操作。
思考当前
在二进制下,
所以,建树时我们可以钦定树边存在 0 和 1 的边权,那么一个叶子节点到根的链上所有边权拼在一起组成的二进制数,即为当前节点对应在原序列上的编号。
具体地:
令节点到右儿子的边权为 1,到左儿子的边权为 0。每次操作时从根节点开始,以左右儿子节点的选取,来代表当前节点对应在原序列上的位置
注意树的边权组成的二进制数代表当前位置
每次操作时,对所有与
此时对序列的操作就变成了对树上一个区间的操作。代码只要模拟我们刚刚所说的过程即可。