摘要: 题意:给定一个序列,要求完成俩个操作1)查询区间[l,r] 的和2)区间更新, 区间每一个数都异或一个数x对每一个查询输出结果分析:对区间更新和查询这种操作,比较明显的就想到了线段树。区间查询比较简单,关键是区间更新该如何解决。我们为线段数的每一个节点开一个cnt[20] 的数组,保存该区间内每一个数二进制位上1的个数,cnt[0] 表示对应区间内所有数第一个二进制数上1的个数和,这样,针对每一个异或操作,我们可以这样解决: for(int i = 0; i < L; ++i) { if(!(v & ( 1 << i) )) continue;//针对异或操作的性质, 阅读全文
posted @ 2013-03-10 13:14 枕边梦 阅读(191) 评论(0) 推荐(0) 编辑