异或和大小比较类问题——抓住最高位:CF1863F
异或和大小比较类问题——抓住最高位:CF1863F
本文搬运自本人高中时期CSDN博客,若图片加载不出来,可到原文查看:https://blog.csdn.net/zhangtingxiqwq/article/details/132629186
https://codeforces.com/contest/1863/problem/F
-
因为有等于,所以考虑异或和为0的合法区间,它可以随意切
-
现在考虑切开后左边大于右边,可以发现左右边最高位可以互相抵消,似乎不太可做?
-
此时可以换个考虑,考虑大区间的异或和的最高位,这一位在左右两个区间 恰好 有一位为1,而为1的那个区间就是转移到的区间
-
然后考虑下图,对于 ,可以转移到的要么以 开头,要么以 结尾。所以其实只需要判断 开头和 结尾的更大区间是否存在一个合法区间满足最高位恰好存在于当前这个区间里面。代码就是:
if((l[i]|r[j])&nx)

相似套路题目:
- GYM104420D
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 zhangxixi的博客!





