Codeforces 703D 树状数组,离线,求区间出现偶数次的数的异或

该博客详细解析了Codeforces 703D编程题目,讨论如何使用树状数组解决区间内出现偶数次的数的异或值查询问题。通过预处理前缀异或和,再结合排序与单点修改区间查询,有效处理大数据范围和复杂查询操作。文章提供了样例输入和输出,并链接了类似问题的参考解题思路。
摘要由CSDN通过智能技术生成

题目链接:

http://codeforces.com/problemset/problem/703/D

题意:

给你n个数,q次查询。每次查询一个区间,求这个区间内所有出现偶数次的数的异或值。

数据范围:

1<=n,m<=10^6.

1<=a[i]<=10^9

样例:

输出:

7
1 2 1 3 3 2 3
5
4 7
4 5
1 3
1 7
1 5

输出:

0
3
1
3
2

题解:

这道题和HDU 3333的做法类似,那个题是求区间不同数字的和。

https://blog.csdn.net/weixin_42757232/article/details/90691366

这道题这道题可以转化为求区间不同数字的异或。首先我们先预处理处前缀异或和。保存在数组pre中。

      那么对于区间[l,r], pre[r]^pre[l-1]能算出这个区间内所有出现奇数次的数的异或。一个数异或偶数次就消去了,只剩下奇数次的数。然后我们只要能求出这个区间所有不同数字的异或值,再异或上pre[r]^pre[l-1],

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值