#ATagc061e. [AGC061E] Increment or XOR
[AGC061E] Increment or XOR
题目描述
有一个非负整数 ,初始值为 。你可以以任意顺序、任意次数执行以下操作:
- 给 加 。该操作的代价为 。
- 选择一个 到 之间的 ,将 替换为 。该操作的代价为 。这里, 表示按位异或运算。
请你求出将 变为给定非负整数 所需的最小总代价,或者报告无法达成目标。
按位异或运算的定义如下:
对于非负整数 , 的二进制表示中,第 位()的数,如果 和 的该位只有一个为 ,则结果为 ,否则为 。
例如,(二进制为:)。
一般地, 个非负整数 的按位异或为 $(\dots((p\_1 \oplus p\_2) \oplus p\_3) \oplus \dots \oplus p\_k)$,并且可以证明,这个结果与顺序无关。
输入格式
输入从标准输入读入,格式如下:
输出格式
如果无法达成目标,输出 -1。否则,输出所需的最小总代价。
样例 1
输入
1 15 0 1
8 2
输出
5
样例 2
输入
3 21 10 100
30 1
12 1
13 1
输出
3
样例 3
输入
1 2 0 1
1 1
输出
-1
样例 4
输入
8 352217 670575 84912
239445 2866
537211 16
21812 6904
50574 8842
380870 5047
475646 8924
188204 2273
429397 4854
输出
563645
说明/提示
限制条件
- ()
- ()
- 输入中的所有值均为整数。
样例解释 1
可以通过以下方式将 变为 :
- 选择 ,将 替换为 ,此时 ,代价为 。
- 给 加 ,此时 ,代价为 。
- 选择 ,将 替换为 ,此时 ,代价为 。
由 ChatGPT 4.1 翻译