您当前的位置: 首页 > 

*DDL_GzmBlog

暂无认证

  • 0浏览

    0关注

    605博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

[luogu]P6225 [eJOI2019]异或橙子 树状数组

*DDL_GzmBlog 发布时间:2022-03-02 12:51:41 ,浏览量:0

前言

因为过样例但是暴0的屑 传送门 :

思路

观察题目所给的 2 − 4 2-4 2−4,不难发现利用 a   x o r   a = 0 a\ xor\ a=0 a xor a=0,最后只剩下了 a 2 a 4 a_2 a_4 a2​a4​

因此再手推几组样例会发现

只有当奇偶性相同的时候才有答案,而答案就是 l , l + 2 , . . . r l,l+2,...r l,l+2,...r

但是这里需要注意修改操作

对于异或树状数组的修改 ,我们仍然可以使用上面那个性质,

这样子我们再 m o d i f y modify modify的时候,需要 m o d i f y ( a [ x ]   x o r   y ) modify(a[x]\ xor\ y) modify(a[x] xor y)

最后输出异或即可 d e b u g debug debug好痛苦啊QAQ

Mycode
const int N  = 2e5+10;
int t1[N],t2[N],a[N];
int n,m;

int lowbit(int x){
	return x & (-x);
}

void add(int *C,int x,int k){
	for(int i = x;i >n>>m;
	for(int i=1;i>a[i];

		if(i&1)
		add(t1,i,a[i]);
		else
		add(t2,i,a[i]);

	}
	for(int i=1;i>op>>x>>y;
		if(op == 1){
			if(x%2 !=0)
			{
				add(t1,x,a[x]^y);
				a[x] = y;
				}
			else{
				add(t2,x,a[x]^y);
				a[x] = y;
			}
		}else{
			if(((x&1)^(y&1)))
			cout            
关注
打赏
1657615554
查看更多评论
0.0598s