解法一:
首先想到通过位运算的性质来做这道题,将q[i]转为二进制来做。
可以分类讨论:
1.当q[i]的第j位为1时,就说明a[l[i]]~a[r[i]]的第j位上都是1
2.反过来,当q[i]的第j位上为0时,a[l[i]]~a[r[i]]的第j位上至少有一个0
所以,先将每一个1的条件满足,然后贪心填0,最后check一遍就可以了
解法二:
用线段树来实现,考虑&和|的特殊性质(q[i]|a[r[i]])
将问题转化为区间|上一个数,查询&的问题
标签:实现 线段树 分享 二进制 .com inf 分类 转化 pos
解法一:
首先想到通过位运算的性质来做这道题,将q[i]转为二进制来做。
可以分类讨论:
1.当q[i]的第j位为1时,就说明a[l[i]]~a[r[i]]的第j位上都是1
2.反过来,当q[i]的第j位上为0时,a[l[i]]~a[r[i]]的第j位上至少有一个0
所以,先将每一个1的条件满足,然后贪心填0,最后check一遍就可以了
解法二:
用线段树来实现,考虑&和|的特殊性质(q[i]|a[r[i]])
将问题转化为区间|上一个数,查询&的问题
标签:实现 线段树 分享 二进制 .com inf 分类 转化 pos
原文地址:https://www.cnblogs.com/heqingyu/p/8159139.html