1 条题解

  • 0
    @ 2025-8-24 22:54:51

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar User_Unauthorized
    AFO

    搬运于2025-08-24 22:54:51,当前版本为作者最后更新于2023-12-26 16:46:08,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    可以发现,xANDyx \operatorname{AND} y 对应了在二进制加法中进位的位置集合,xXORyx \operatorname{XOR} y 对应了结果中为 11 但是没有进位的位置集合。因此,通过用位运算模拟加法的过程,我们可以得出

    $$x + y = 2 \times \left(x \operatorname{AND} y\right) + x \operatorname{XOR} y $$

    因为已知 x+yx + yxANDyx \operatorname{AND} y,因此可以得到 xXORyx \operatorname{XOR} y,设为 CC

    那么所有可能的合法数对可以通过将 CC 二进制下的 11 分配给 xxyy 得到。注意到若 CANDBC \operatorname{AND} B 不为 00 那么不存在合法的分配方案,此时应按无解处理。

    通过一些观察可以发现 CC 二进制下最高位的 11 一定分配给 yy,否则无法保证 xyx \le y。在这之后的所有情况均合法,所以可以发现对于一种方案,将 CC 二进制下除最高位的其他位分配方案取反,得到的方案也是合法的,且与原方案互补。

    所以只会有 CC 二进制下最高位的 11 产生贡献,贡献系数为剩余位数的方案数,即 2popcount(C)12 ^{\operatorname{popcount}\left(C\right) - 1}

    因此我们可以在 O(1)\mathcal{O}\left(1\right) 的时间内回答每组询问。

    • 1

    信息

    ID
    9637
    时间
    1000ms
    内存
    512MiB
    难度
    4
    标签
    递交数
    0
    已通过
    0
    上传者