题解-CF1479

时间:2021-02-09 12:42:27   收藏:0   阅读:0

CF1479C Continuous City

首先考虑

CF1479D Odd Mineral Resource

不放文章里了,不讲 wood 的偷袭怪 @【数据删除】 耗子尾汁。

这题不难,但是蒟蒻想要介绍两种方法。

法 1

这是一个有关数颜色的问题,直接树上莫队。

在莫队上分块,对于每一个块维护可能成为答案的数的队列。

修改的时候更改 \(cnt\) 数组,如果模 \(2\)\(1\),那么就丢进这个颜色所属的块的队列内。

查询的时候,对于查询区间内的每一个块的队列,如果队头是满足条件的,那么就找到了一个答案;否则弹出队头。散块暴力即可。

时间复杂度 \(\Theta(n \sqrt m)\)

喜提最劣解。

aclink

法 2

这个出现奇数次可以用异或来处理。

如果对于每一个元素,进行随机赋值。我们查询树上 \(u\)\(v\) 上,编号在 \(l\)\(r\) 的权值异或和,如果是 \(0\) 那么我们就认为答案是 -1

然后我们进行二分答案,查询一下 \([l, mid]\),如果异或和不是 \(0\) 就在 \([l, mid]\) 往下做,否则 \([mid + 1, r]\) 的异或和一定不是 \(0\),在 \([mid + 1, r]\) 往下做。

这个可以主席树维护。由于这是主席树,我们可以直接在主席树上二分。

喜提最优解。

aclink

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!