AT_agc061_e [AGC061E] Increment or XOR
题目描述
有一个非负整数 $X$,初始值为 $S$。你可以以任意顺序、任意次数执行以下操作:
- 给 $X$ 加 $1$。该操作的代价为 $A$。
- 选择一个 $1$ 到 $N$ 之间的 $i$,将 $X$ 替换为 $X \oplus Y_i$。该操作的代价为 $C_i$。这里,$\oplus$ 表示按位异或运算。
请你求出将 $X$ 变为给定非负整数 $T$ 所需的最小总代价,或者报告无法达成目标。
按位异或运算的定义如下:
对于非负整数 $A, B$,$A \oplus B$ 的二进制表示中,第 $2^k$ 位($k \geq 0$)的数,如果 $A$ 和 $B$ 的该位只有一个为 $1$,则结果为 $1$,否则为 $0$。
例如,$3 \oplus 5 = 6$(二进制为:$011 \oplus 101 = 110$)。
一般地,$k$ 个非负整数 $p_1, p_2, p_3, \dots, p_k$ 的按位异或为 $(\dots((p_1 \oplus p_2) \oplus p_3) \oplus \dots \oplus p_k)$,并且可以证明,这个结果与顺序无关。
输入格式
输入从标准输入读入,格式如下:
> $N$ $S$ $T$ $A$
> $Y_1$ $C_1$
> $\vdots$
> $Y_N$ $C_N$
输出格式
如果无法达成目标,输出 `-1`。否则,输出所需的最小总代价。
说明/提示
### 限制条件
- $1 \leq N \leq 8$
- $0 \leq S, T < 2^{40}$
- $0 \leq A \leq 10^5$
- $0 \leq Y_i < 2^{40}$($1 \leq i \leq N$)
- $0 \leq C_i \leq 10^{16}$($1 \leq i \leq N$)
- 输入中的所有值均为整数。
### 样例解释 1
可以通过以下方式将 $X$ 变为 $T$:
- 选择 $i=1$,将 $X$ 替换为 $X \oplus 8$,此时 $X=7$,代价为 $2$。
- 给 $X$ 加 $1$,此时 $X=8$,代价为 $1$。
- 选择 $i=1$,将 $X$ 替换为 $X \oplus 8$,此时 $X=0$,代价为 $2$。
由 ChatGPT 4.1 翻译