CF2103F Maximize Nor

题解

首先观察这个 nor 操作的答案是什么?

按位处理,假设 rrr 前的最后一个 111 位置为 xxx

  • x≥lx\geq lxl ,那么当 x,rx,rx,r 的奇偶性相同时答案为 111 ,否则为 0 .

  • x<lx<lx<l,那么当 l,rl,rl,r 的奇偶性不同时答案为 1 ,否则为 0 .

考虑 l=r or r−1l=r \text{ or } r-1l=r or r1 ,一直向前跳相同奇偶性的位置,发现答案只会至多改变一次,也就是对于右端点 rrr 固定来说,不同的区间 nornornor 实际上只有 4k4k4k 种。

将奇偶位置拆分,可以通过对于差分和关键点排序的方法来求出对于右端点 rrr 的每个左端点区间的答案。即维护了很多四元组 (0/1,pr,i,r,v)(0/1,p_{r,i},r,v)(0/1,pr,i,r,v)0/10/10/1 代表奇偶性, pr,ip_{r,i}pr,i 表示 rrr 的相同nor值第 iii 个左端点区间的右端点,vvv 表示值。

接着,从小到大枚举 iii 计算答案,对于每个 rrr 维护 奇/偶 两个指针表示当前的 iii 在哪一个左端点区间,再对奇偶位置分别维护线段树,假如进入了新的区间且值增大了,那么就修改对应奇偶线段树的第 rrr 个位置的值,查询相当于后缀 max⁡\maxmax

时间复杂度 O(nk(log⁡n+log⁡k))O(nk(\log n+\log k))O(nk(logn+logk))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值