1 条题解

  • 0
    @ 2025-8-24 23:07:45

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar Coffee_zzz
    沉覆z

    搬运于2025-08-24 23:07:45,当前版本为作者最后更新于2024-12-08 17:52:28,作者可能在搬运后再次修改,您可在原文处查看最新版

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

    以下是正文


    Solution 1

    s=ts=t 时答案显然为 00,只需要考虑 sts \ne t 时的情况。

    断言:将 ss 的值先修改为 2n12^n-1 再修改为 tt 一定不劣。

    证明:首先这样显然是满足两个限制条件的,所以我们可以这样操作。接下来,对于每个二进制位,设 ss 中该位为 aatt 中该位为 bb,则我们可以根据 aabb 的值分类讨论,得到必须进行的操作:

    • a=b=0a=b=0,由于第二条限制,必须先将 aa 的值修改为 11 再修改为 00
    • a=0a=0b=1b=1,则必然会将 aa 的值修改为 11 至少一次。
    • a=1a=1b=0b=0,则必然会将 aa 的值修改为 00 至少一次。
    • a=b=1a=b=1,则没有必须进行的操作。

    我们发现「将 ss 的值先修改为 2n12^n-1 再修改为 tt」只进行了必须进行的操作,只会付出进行这些操作的代价,于是证明了这样操作一定不劣。

    当然,还有其他的证明方式同样可以得到该结论。

    根据结论,我们直接输出 (s(2n1))+((2n1)t)(s \oplus (2^n-1))+((2^n-1)\oplus t) 即可。

    Solution 2

    由于需要满足 sx=2n1s \cup x = 2^n-1,所以 ssxx 在每个二进制位中至少需要有一位为 11
    由于代价为 sxs \oplus x,所以 ssxx 在二进制下相同的位数越多越好。

    所以对于所有满足条件的 xxx=2n1x=2^n-1 时代价最小。

    s=ts=t 时输出 00,否则判断一下是否能一步从 ss 变到 tt,和 ss 变到 2n12^n-1 再变到 tt 的代价取个 min\min 即可。

    其实可以证明,从 ss 变到 2n12^n-1 再变到 tt 一定不比直接从 ss 变到 tt 劣,但是不知道也已经能做了。

    • 1

    信息

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