AT_agc061_e.[AGC061E] Increment or XOR

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

有一个非负整数 XX,初始值为 SS。你可以以任意顺序、任意次数执行以下操作:

  • 给 XX 加 11。该操作的代价为 AA。
  • 选择一个 11 到 NN 之间的 ii,将 XX 替换为 X⊕YiX \oplus Y_i。该操作的代价为 CiC_i。这里,⊕\oplus 表示按位异或运算。

请你求出将 XX 变为给定非负整数 TT 所需的最小总代价,或者报告无法达成目标。

按位异或运算的定义如下:
对于非负整数 A,BA, B,A⊕BA \oplus B 的二进制表示中,第 2k2^k 位(k≥0k \geq 0)的数,如果 AA 和 BB 的该位只有一个为 11,则结果为 11,否则为 00。

例如,3⊕5=63 \oplus 5 = 6(二进制为:011⊕101=110011 \oplus 101 = 110)。
一般地,kk 个非负整数 p1,p2,p3,…,pkp_1, p_2, p_3, \dots, p_k 的按位异或为 (…((p1⊕p2)⊕p3)⊕⋯⊕pk)(\dots((p_1 \oplus p_2) \oplus p_3) \oplus \dots \oplus p_k),并且可以证明,这个结果与顺序无关。

输入格式

输入从标准输入读入,格式如下:

NN SS TT AA
Y1Y_1 C1C_1
⋮\vdots
YNY_N CNC_N

输出格式

如果无法达成目标,输出 -1。否则,输出所需的最小总代价。

输入输出样例

  • 输入#1

    1 15 0 1
    8 2

    输出#1

    5
  • 输入#2

    3 21 10 100
    30 1
    12 1
    13 1

    输出#2

    3
  • 输入#3

    1 2 0 1
    1 1

    输出#3

    -1
  • 输入#4

    8 352217 670575 84912
    239445 2866
    537211 16
    21812 6904
    50574 8842
    380870 5047
    475646 8924
    188204 2273
    429397 4854

    输出#4

    563645

说明/提示

限制条件

  • 1≤N≤81 \leq N \leq 8
  • 0≤S,T<2400 \leq S, T < 2^{40}
  • 0≤A≤1050 \leq A \leq 10^5
  • 0≤Yi<2400 \leq Y_i < 2^{40}(1≤i≤N1 \leq i \leq N)
  • 0≤Ci≤10160 \leq C_i \leq 10^{16}(1≤i≤N1 \leq i \leq N)
  • 输入中的所有值均为整数。

样例解释 1

可以通过以下方式将 XX 变为 TT:

  • 选择 i=1i=1,将 XX 替换为 X⊕8X \oplus 8,此时 X=7X=7,代价为 22。
  • 给 XX 加 11,此时 X=8X=8,代价为 11。
  • 选择 i=1i=1,将 XX 替换为 X⊕8X \oplus 8,此时 X=0X=0,代价为 22。

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页