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]])

  将问题转化为区间|上一个数,查询&的问题

posted @ 2017-12-31 21:47  Accelerator-D-x  阅读(151)  评论(0编辑  收藏  举报