蒟蒻38pts求调
查看原帖
蒟蒻38pts求调
452893
TriQUery楼主2024/4/25 19:50
#include <bits/stdc++.h>
#define int long long
using namespace std;

int n, q;
int a[2][200010];

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

void change(int a[], int pos, int x)
{
	if (pos > n) return ;
	a[pos] ^= x;
	change(a, pos + lowbit(pos), x);
}

int TriQUery(int a[], int pos)
{
	if (pos == 0) return 0;
	return a[pos] ^ TriQUery(a, pos - lowbit(pos));
}

signed main()
{
	ios::sync_with_stdio(false);
	cin.tie(0); cout.tie(0);
	
	cin >> n >> q;
	for (int i = 1; i <= n; i++)
	{
		int t;
		cin >> t;
		change(a[i & 1], i, t);
	}
	for (int i = 1; i <= q; i++)
	{
		int op, l, r;
		cin >> op >> l >> r;
		if (op == 1) change(a[l & 1], l, a[l & 1][l] ^ r);
		if (op == 2)
		{
			if ((r - l + 1) % 2)
				cout << (TriQUery(a[l & 1], r) ^ TriQUery(a[l & 1], l - 1)) << endl;
			else cout << "0" << endl;
		}
	}
	return 0;
}
2024/4/25 19:50
加载中...