看到题目,我想起了$Ayachi$ $Nene$说过的一句话:私のオナニーを見て下さいっ
|
|
z……wei?!
题目 1427 zwei
2017-08-24 14:49:55
|
|
树状数组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:按一下开关) 一个数异或上另一个数相当于对一个灯泡序列执行一个操作序列(或者将两个操作序列合并成一个等价的操作序列)。 很显然,异或满足结合律。同样很显然,对一个灯泡序列执行两次同样的操作序列会得到原来的灯泡序列。对于多个“序列”(也就是多个数的异或和),这结论也适用。于是就解释通了(?)。(我这扯得都是啥) |
|
数组开小了QAQ果然是看了40%的数据@TCtower
|
|
真的是C++
|
|
我其实是打C++的
|
|
水死人的位运算,异或异或和,去你的。。
题目 1427 zwei
2015-06-14 10:40:15
|
|
题目 1427 zwei
2015-06-12 08:03:04
|
|
线段树哦 >_<
|
|
|
|
|
|
|
|
还是只能敲线段树
|
|
谁用输入输出流……哭,输入输出流直接T六个点
题目 1427 zwei
2014-10-18 18:45:28
|
|
|
|
居然真能过……我还是不明白为什么和树状数组加法近乎相似的操作可以求出亦或和,还有为什么亦或满足区间减法……和亦或的性质有关吗……
|
|
线段树和树状数组均可,树状数组较简洁,需要知道异或满足区间减法。
|
|
线段树终于入门了 = =
|
|
模拟即可……
题目 1427 zwei
2013-10-31 09:16:29
|
|
0^1=1 0^0=0 这就说明0^a=a也就是说0对异或运算是没有影响的……考试时居然没仔细想就……少了100,心痛啊
裸线段树。。。 |