CODECHEF September Challenge 2015 REBXOR:Nikitosh 和异或

Posted Geek_kay

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CODECHEF September Challenge 2015 REBXOR:Nikitosh 和异或相关的知识,希望对你有一定的参考价值。

Description:

题目描述:

  给定一个含n个元素的数组a,下标从1开始。请找出下面式子的最大值:(a[l1]a[l1+1]a[l1+2]...a[r1-1]a[r1])+(a[l2]a[l2+1]a[l2+2]...a[r2-1]a[r2]),其中1<=l1<=r1<l2<=r2<=n,^表示按位异或。

输入格式:

  输入数据的第一行包含一个整数n,表示数组中的元素个数。
  第二行包含n个整数a[1],a[2],...,a[n]。

输出格式:

  输出一行包含给定表达式可能的最大值。

样例:

样例输入:

5
1 2 3 1 2

样例输出

6

数据范围与提示:

对于100%的数据,2<=n<=4e5,0<=a[i]<=1e9。

思路:

  明显,0/1Trie树、
  由于要求r1<l2,考虑以一个下标为分界线,在他之前的是r1,l1,之后是r2,l2
  用两个数组r,l表示在i~n的范围内最大的异或和的值与1~i的范围内最大的异或和。有:

l[i]=max(l[i-1],t.search(x)),x表示从1到i的异或和。
r[i]=max(r[i+1],t.search(x)),x表示从i到n的异或和。

  然后O(n)循环取l[i]+r[i+1]的max即可。
2021.6.6 现役

以上是关于CODECHEF September Challenge 2015 REBXOR:Nikitosh 和异或的主要内容,如果未能解决你的问题,请参考以下文章

CODECHEF September Challenge 2015 REBXOR:Nikitosh 和异或

Codechef 虫洞:我的逻辑有啥问题?

Codechef RIN 「Codechef14DEC」Course Selection 最小割离散变量模型

codechef Suffix Palindromes

IDE 中的代码正确,但 CodeChef 中出现错误

Codechef Course Selection