bzoj4571 美味

来源:互联网 发布:方舟生存进化淘宝购买 编辑:程序博客网 时间:2024/05/16 18:33

美味

题目背景:

bzoj4571

分析: 首先,明确一个异或的套路,高位贪心,然后我们就可以发现,想要每一次求出最大值,就是针对给出的bi进行高位贪心,现在我们来一步步解决此题,从简化版开始考虑。

1、     有每一道菜的美味值ai,并且没有lr的限制,也没有偏爱值xi

方法:因为需要满足高位贪心,那么,我们只需要将每一个ai计入一个trie树中,然后将每一个bi放在trie上跑,每次判定是否在当前的位置上是否有与之不同的一个(为0,找1,为1,找0),然后走到最后一个即可。

2、     有每一道菜的美味值ai,没有lr的限制,有偏爱值xi

方法:因为这一次有了偏爱值的限制,那么显然的,我们不能直接将值放入trie树,然后我们考虑,我们每一次寻找的都是一段权值的区间,那么我们将这个区间的最小和最大都减去xi,所得到的就是我们想要找的区间,那么如何求的在这样一个值域中是否存在有数呢,那么用一个权值线段树就可以简单的维护啦

3、     现在我们考虑题目的最终版,有lr的限制,有偏爱值xi

方法:有了lr那么每一次我们该如何查找呢,这意味着我们需要在每一位上建立权值线段树,那么结果当然就是主席树了,每一次加入一个树然后对于询问的区间查找在当前的区间中,是否存在当前值域限制中的数即可,最终的复杂度应该是 O((询问个数) * (位数的枚举) * (主席树)) = O(nlog2n)

Source



0 0
原创粉丝点击