专栏文章

题解:CF2146D2 Max Sum OR (Hard Version)

CF2146D2题解参与者 2已保存评论 1

文章操作

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

当前评论
1 条
当前快照
1 份
快照标识符
@minso803
此快照首次捕获于
2025/12/02 07:42
3 个月前
此快照最后确认于
2025/12/02 07:42
3 个月前
查看原文
考虑这样一个构造:从最高位开始,如果最高位都一样就跳过,否则就代表,一定会存在 (011111)2(011\dots111)_2(100000)2(100\dots000)_2 这两个数,把他俩或起来就取到最值了,然后显然 (011111)21=(011110)2(011\dots111)_2-1=(011\dots110)_2(100000)2+1=(100001)2(100\dots000)_2+1=(100\dots001)_2,这两个也是可以配对的。
维护 l=(011111)2,r=(100000)2l=(011\dots111)_2,r=(100\dots000)_2,每次 [l,r][l,r] 往外扩展到 [l1,r+1][l-1,r+1],然后把这几个位置填好。
最后会剩一点,他们的最高位是多少不重要,我们只需要递归做这个子问题即可。

评论

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

正在加载评论...