专栏文章
题解:AT_agc057_c [AGC057C] Increment or Xor
AT_agc057_c题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @min3wm30
- 此快照首次捕获于
- 2025/12/01 20:09 3 个月前
- 此快照最后确认于
- 2025/12/01 20:09 3 个月前
题解
先考虑判无解,设 ,则一个排列能还原的一个必要条件是 。证明考虑最终状态下一定是满足条件的,然后就是因为只有异或和 +1 操作,所以这个条件始终成立。
先考虑简单的情况,如果 的最高位都是 0,那我们直接异或一个 就做完了。那如果不为零,我们就想去把它们全都变成零。从左到右考虑 的每个位置,考虑怎么操作才没有后效性?若当前考虑到了 ,前面 的最高位都变成了零,当前是 1,我们考虑用一些 +1 和异或把 1 变成 0 并且不影响其他位置的最高位。首先如果一直 +1 显然不行,所以我们最开始考虑异或。但是如果我们最高位异或上 1 那不就废了吗?这里我们可以先把 异或成 ,这样我们最高位异或上了一个零不会对其他地方有影响,然后我们全局 +1。这时候 会变成 0,考虑其他位置若是要最高位变成 1 那一定会产生进位。如果一个 要进位那么有 ,但是考虑我们的 ,那么就有 ,于是这样操作永远不会进位。并且这样操作次数不超过 ,非常优秀。
具体维护可以使用 01trie,时间复杂度 。
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...