专栏文章

「Cfz Round 5」Non-breath Oblige 题解

P11485题解参与者 8已保存评论 8

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
8 条
当前快照
1 份
快照标识符
@miquaox2
此快照首次捕获于
2025/12/04 10:51
3 个月前
此快照最后确认于
2025/12/04 10:51
3 个月前
查看原文

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 劣,但是不知道也已经能做了。

评论

8 条评论,欢迎与作者交流。

正在加载评论...