#1479. 结构体合并

结构体合并

题目描述

你有 nn 个结构体,每个结构体有一个头标记和一个尾标记。结构体们围成一个圆环

你有一种魔法,可以将两个相邻的结构体 (a,x),(x,b)(a,x),(x,b) 合并为一个新的结构体 (a,b)(a,b)。也就是说,如果前一个结构体的头标记为 aa,尾标记为 xx,后一个结构体的头标记为 xx,尾标记为 bb,则合并后新产生的结构体头标记为 aa,尾标记为 bb

每次使用魔法都会消耗魔力值。对于相邻结构体 (a,x),(x,b)(a,x),(x,b),合并操作消耗的魔力值为 a xor x xor ba \text{ xor } x \text{ xor } b。(其中, xor \text{ xor } 为异或运算符,可见提示说明 )

你可以多次使用魔法,直到最后仅剩下一个结构体,此后不能再使用魔法。

你初始拥有魔力值 HH,问在多次使用魔法后到不能再使用魔法时,剩余的魔力值可能的最小值是多少。

输入格式

第一行输入一个正整数 nn,代表结构体的个数。

第二行输入一个正整数 HH,代表你初始拥有的魔力值。

第三行是 nn 个用空格隔开的正整数,所有的数均不超过 100000100000。第 ii 个数为第 ii 个结构体的头标记 1in(1≤i≤n),当 i<ni<n 时,第 ii 个结构体的尾标记应该等于第 i+1i+1 个结构体的头标记。第 nn 个结构体的尾标记应该等于第 11 个结构体的头标记。

输出格式

一个整数,代表剩余的魔力值可能的最小值。保证答案为非负整数,并且答案 109 \leq 10^9

输入输出样例 #1

输入 #1

4
16 
1 2 3 4

输出 #1

0

输入输出样例 #2

输入 #2

5
100
2 3 5 7 8

输出 #2

59

样例1解释:

初始结构体:(1,2)(2,3)(3,4)(4,1)(1,2)(2,3)(3,4)(4,1)

合并第二个和第三个:(1,2)(2,4)(4,1)(1,2)(2,4)(4,1),魔力值 $2 \text{\textasciicircum} 3 \text{\textasciicircum} 4=5$ 。

合并前两个:(1,4)(4,1)(1,4)(4,1),魔力值 $1 \text{\textasciicircum} 2 \text{\textasciicircum} 4=7$ 。

合并剩下的,魔力值 $1 \text{\textasciicircum} 4 \text{\textasciicircum} 1=4$ 。

总消耗魔力值 5+7+4=165+7+4=16,这是使得剩余的魔力值为最小值的情况。

注意:结构体们围成一个圆环,开头的和末尾的结构体也是相邻的。


关于异或操作的说明:

异或( XOR,记作 ^ )是一种二进制位运算,规则如下:

对于两个二进制数的每一位:

  • 如果对应位的值相同(同为 0 或同为 1),则结果的该位为 0
  • 如果对应位的值不同(一个为 0,一个为 1),则结果的该位为 1

示例:

  • 5^3 的计算:
    5 的二进制:0101
    3 的二进制:0011
    逐位异或结果:0110(即十进制的 6
    5^3 = 6

    说明/提示

对于 40%40\% 的样例,(4n10)(4 \leq n \leq 10)(H109)(H \leq 10^9)

对于 100%100\% 的样例,(4n100)(4 \leq n \leq 100)(H109)(H \leq 10^9)

  • 时间限制: 1s1 s
  • 空间限制: 256MB256 MB