1 条题解

  • 0
    @ 2026-4-4 19:04:42

    E. Finding OR Sum 详细题解

    一、关键数学恒等式

    本题核心突破口是推导出:

    (nx)+(ny)(n \mid x) + (n \mid y)

    位按位展开式

    对任意一位二进制位 bb0011),观察这一位在 x,y,nx,y,n 中的取值:

    设:

    • nbn_bnn 的第 bb
    • xbx_bxx 的第 bb
    • yby_byy 的第 bb

    则该位对总和的贡献为:

    $$(n_b \mid x_b) \cdot 2^b + (n_b \mid y_b) \cdot 2^b $$

    nb=0/1n_b=0/1 分类:

    1)当 nb=0n_b=0

    贡献为:

    (xb+yb)2b(x_b + y_b)\cdot 2^b

    2)当 nb=1n_b=1

    贡献恒为:

    (1+1)2b=22b(1 + 1)\cdot 2^b = 2\cdot 2^b

    整体表达式

    令:

    • S=x+yS = x + y(所有位 xb+ybx_b+y_b 的加权和)
    • U=xyU = x \mid y

    则可以得到全局恒等式

    $$\boxed{(n \mid x)+(n \mid y) = S + \sum_{b:\,n_b=1,\,(x|y)_b=0} 2^b} $$

    更简洁的最终形式:

    $$\boxed{(n \mid x)+(n \mid y) = (x + y) + (n \,\&\, \sim\!(x \mid y))} $$

    二、变量定义

    我们只需要求出两个值:

    1. A=x+yA = x + y
    2. B=xyB = x \mid y

    一旦知道 A,BA,B,对任意 mm 都可以 O(1)O(1) 算出答案:

    ans=A+(m& ⁣B)ans = A + (m \,\&\, \sim\! B)

    三、询问策略(最多 2 次)

    方案:用 n=0n=0n=2301n=2^{30}-1

    1. 询问 n=0n=0
    q0=(0x)+(0y)=x+y=Aq_0 = (0|x)+(0|y) = x + y = A

    直接得到 AA

    1. 询问 n=ALL_ONE=2301n = \text{ALL\_ONE} = 2^{30}-1
    $$q_{\text{all}} = (\text{ALL}|x)+(\text{ALL}|y) = \text{ALL} + \text{ALL} = 2(2^{30}-1) $$

    这个询问其实可以不用,因为我们只需要 AABB,而:

    • n=0n=0 得到 AA
    • 再随便问一个 n0n\neq 0 即可解出 BB

    最简合法策略(只用 1 次或 2 次)

    • 第 1 次问 n=0n=0,得到 A=x+yA = x+y
    • 第 2 次问任意 nn(比如 n=1n=1),得到:
    q1=A+(1& ⁣B)q_1 = A + (1 \,\&\, \sim\! B)

    移项得:

    1& ⁣B=q1A1 \,\&\, \sim\! B = q_1 - A

    从而可以逐位恢复出 B=xyB = x\mid y

    实际最优解法: 只需要询问 n=0n=0 一次,就足够推出所有需要信息,满足 2\le 2 次限制。


    四、最终答案公式

    拿到 A=x+yA=x+yB=xyB=x|y 后,对给定的 mm

    $$\boxed{ (m \mid x)+(m \mid y) = A + (m \,\&\, \sim\! B) } $$

    五、算法流程

    1. 询问 n=0n=0,得到 A=x+yA = x + y。 2.(可选)再询问一次任意 nn,解出 B=xyB = x \mid y
    2. 输出 !
    3. 读入 mm
    4. 用公式计算答案并输出。

    六、复杂度

    • 时间:O(30)O(30) 每位处理
    • 询问数:2\le 2,完全满足题目限制

    七、一句话总结

    • (nx)+(ny)(n\mid x)+(n\mid y) 只和 x+yx+y 以及 xyx\mid y 有关。
    • n=0n=0 直接得到 x+yx+y
    • 再问一次即可推出 xyx\mid y
    • 之后任意 mm 都可以 O(1)O(1) 计算。
    • 1

    信息

    ID
    6367
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    1
    已通过
    1
    上传者