题解:P14188 [ICPC 2024 Hangzhou R] Barkley III
考 XCPC 训练赛的时候见到的题,赛时拼尽全力无法战胜,故写一篇题解记录一下。
下面两段是我赛时的想法,都是错的我太菜了,不感兴趣的可以跳过。
先给出一个大部分人都会考虑的做法:将
考虑优化,我们运用势能分析,发现每一位只会有 过不了你在这哔哔什么
上面都是假做法,接下来讲真做法。
发现把每一位都拆出来不可做,因为这样至少会有一个
还是线段树,考虑在线段树上维护这个区间的与和,同时维护这个区间内是否只有一个
发现与和这个信息是平凡的,接下来讨论区间
考虑合并,可以分讨这个
- 如果修改的不是元区间,则这一位满足条件需要满足与的是
1 且这一位本身满足条件,因为与0 就会直接被赋成0 。所以直接与上修改的x 即可。 - 如果修改的是元区间,因为区间长度只有
1 ,所以只要这一位是0 那就恰好有1 个0 。故不论原来是0 还是与了0 这一位都会变成0 。所以可以或上修改的x 按位取反的结果。
信息已经维护好了,那么可以直接查询区间信息,找最高的只有一个
代码写的有点丑,就不放了。想看的自己点进来看。