2019年1月25日

今天做到了一个前缀异或的题目
输入一个长度为n(1 <= n <= 100000)数组a[1], a[2], …, a[n]。
输入一个询问数m(1 <= m <= 100000)和m组询问,每组询问形如(l, r)
对于每组询问(l, r),你需要输出a[l] xor a[l + 1] xor … xor a[r - 1] xor a[r],即第l个数字到第r个数字的异或。
一开始对异或并不是很了解 就闷头开始做 一开始做的时候总是超时 在注意到了前缀之后就尝试用二维数组来做 用横坐标来代表 l 纵坐标来代表r 数组内容就存从l到r异或的值可是如何都会超内存,后来查阅发现异或的其中一个用法a ⊕ b ⊕ a = b。我的理解就像是阶乘(n-m+1)(n-m+2)……n=n!/m!。然后我定义一个数组每一个数组元素根据下标来表示前几个数据的异或。每第l个数字到第r个数字的异或就可以表示为a[l-1]^a[r]既节省空间有节省时间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值