题解 bzoj4260 【Codechef REBXOR】

题目要求一个序列中的两个子段,使这两个子段每段的异或和加起来值最大。

说到异或,我就想到开花 T r i e Trie Trie字典树。

先考虑怎么求一个 l l l r r r子段的异或和 ( ( (异或和:所有数异或起来的值 ) ) )

a l ⊕ a l + 1 ⊕ . . . ⊕ a r − 1 ⊕ a r = ( a 1 ⊕ a 2 ⊕ . . . ⊕ a r − 1 ⊕ a r ) ⊕ ( a 1 ⊕ a 2 ⊕ . . . ⊕ a l − 2 ⊕ a l − 1 ) a_l\oplus a_{l+1}\oplus...\oplus a_{r-1} \oplus a_{r}=(a_1\oplus a_2\oplus...\oplus a_{r-1} \oplus a_{r})\oplus(a_1\oplus a_2\oplus...\oplus a_{l-2} \oplus a_{l-1}) alal+1...ar1

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值