题目名称 1427. zwei
输入输出 zwei.in/out
难度等级 ★☆
时间限制 1000 ms (1 s)
内存限制 256 MiB
测试数据 10
题目来源 Gravatarcqw 于2013-10-26加入
开放分组 全部用户
提交状态
分类标签
树状数组 线段树
分享题解
通过:155, 提交:248, 通过率:62.5%
GravatarAAAAAAAAAA 100 0.120 s 1.08 MiB C++
Gravatarztx 100 0.238 s 17.79 MiB C++
Gravatar0 100 0.252 s 1.07 MiB C++
GravatarDissolute丶Tokgo 100 0.260 s 0.95 MiB C++
Gravatar0 100 0.260 s 1.07 MiB C++
Gravatardiyonglin 100 0.260 s 3.69 MiB C
Gravatar啊啦吧啦吧啦 100 0.267 s 1.07 MiB C++
Gravatar啊啦吧啦吧啦 100 0.268 s 1.07 MiB C++
Gravatar啊吧啦吧啦吧 100 0.276 s 1.05 MiB C
Gravatarforever 100 0.315 s 1.07 MiB C++
本题关联比赛
20131026
20131026
EYOI常规赛9 3/4th
关于 zwei 的近10条评论(全部评论)
看到题目,我想起了$Ayachi$ $Nene$说过的一句话:私のオナニーを見て下さいっ
Gravatarムラサメ
2023-03-29 08:23 20楼
z……wei?!
Gravatar+1s
2017-08-24 14:49 19楼
树状数组1A(我知道我之前WA但那些都是线段树(误)。
异或有一个很好玩的性质,a^b=c,则c^a=b,利用这个性质我们首先可以把树状数组的update函数写出来,遍历父节点,将父节点先异或上原来的值再异或上修改后的值。(等价的方法是,先计算出旧值和新值的疑惑结果w,再把父节点都异或上w)
求和时,可以用树状数组高效求前缀异或和。异或满足这样的性质:若A=a1^a2^a3^....^an,B=a1^a2^a3....^am(m<n),则A^B=a(m+1)^a(m+2)^....^an。利用这个性质我们就可以方便地像用树状数组求区间加和一样求异或和了。
我对这个性质的蒟蒻解(xia)释(che)如下:
不妨将一个数的二进制表示视作具有两种含义:
1.一串连续排列的灯泡的状态(0:关 1:开)
2.对一串连续排列灯泡的一串操作(0:不按开关1:按一下开关)
一个数异或上另一个数相当于对一个灯泡序列执行一个操作序列(或者将两个操作序列合并成一个等价的操作序列)。
很显然,异或满足结合律。同样很显然,对一个灯泡序列执行两次同样的操作序列会得到原来的灯泡序列。对于多个“序列”(也就是多个数的异或和),这结论也适用。于是就解释通了(?)。(我这扯得都是啥)
Gravatarliu_runda
2016-02-22 21:55 18楼
数组开小了QAQ果然是看了40%的数据@TCtower
Gravatardevil
2015-09-13 15:38 17楼
真的是C++
Gravatar啊吧啦吧啦吧
2015-06-14 16:12 16楼
我其实是打C++的
Gravatar啊吧啦吧啦吧
2015-06-14 16:12 15楼
水死人的位运算,异或异或和,去你的。。
Gravatarstone
2015-06-14 10:40 14楼
回复 @♔ saber :
学长...
Gravatar0
2015-06-12 08:03 13楼
线段树哦 >_<
Gravatarztx
2015-06-11 20:08 12楼
Gravatar0
2015-06-11 17:35 11楼

1427. zwei

★☆   输入文件:zwei.in   输出文件:zwei.out   简单对比
时间限制:1 s   内存限制:256 MiB


‘‘

【样例输入】

5 5 1 2 3 4 5 1 1 3 1 3 5 0 3 6 1 1 3 1 3 5

【样例输出】

0 2 5 7

【提示】


对于100%的数据 0 < n < 10^5,  0 < m < 10^5,  0 < ai,y < 10^9,  1 < x,l,r < n

对于40%的数据 0 < n < 1000,0 < m < 1000



【来源】

在此键入。