解法一:
首先想到通过位运算的性质来做这道题,将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]])
将问题转化为区间|上一个数,查询&的问题
Posted heqingyu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Interesting Array相关的知识,希望对你有一定的参考价值。
解法一:
首先想到通过位运算的性质来做这道题,将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]])
将问题转化为区间|上一个数,查询&的问题
以上是关于Interesting Array的主要内容,如果未能解决你的问题,请参考以下文章
Codeforces 706B Interesting drink