#UT613. [USACO6.1.3] 奶牛异或 Cow XOR

[USACO6.1.3] 奶牛异或 Cow XOR

Cow XOR

农场主约翰遇到了在喂养他的牛时的另一个问题。所有的 N (1 ≤ N ≤ 100,000)头牛(编号从 1 到 N)排成一队在谷仓前,按照它们在社会等级中的排名进行排序。牛 #1 拥有最高的排名;牛 #N 拥有最低的排名。每头牛还被分配了一个在范围 0..(221 - 1) 内的非唯一整数。

帮助约翰选择哪些牛首先被喂养,通过选择队列中连续的牛,确保它们的分配数字的按位 "xor" 值达到最大。如果有多个这样的序列,选择最后一头牛排名最高的序列。如果仍然有平局,选择最短的序列。

时间限制:0.5 秒

程序名称:cowxor

输入格式

  • 第 1 行:一个整数 N
  • 第 2 行至第 N+1 行:N 个整数,范围从 0 到 221 - 1,表示牛的分配数字。第 j 行描述社会等级为 j-1 的牛。

示例输入(文件 cowxor.in)

5
1
0
5
4
2

输入详情

有 5 头牛。牛 #1 被分配了数字 1;牛 #2 被分配了 0;牛 #3 被分配了 5;牛 #4 被分配了 4;牛 #5 被分配了 2。

输出格式

  • 第 1 行:三个以空格分隔的整数,分别是最大请求值,序列开始的位置,序列结束的位置。

示例输出(文件 cowxor.out)

6 4 5

输出详情:

  4   xor   2   =   6
(001) xor (010) = (011)