刚写线段树,0ptWA求调
查看原帖
刚写线段树,0ptWA求调
214927
ZOU_S楼主2024/12/3 19:18

rt

#include<bits/stdc++.h>
#define int long long 
using namespace std;
const int N = 1e5+5;
int t[N << 2], a[N]; // N << 2 = N * 4
int n, m;

void update(int id, int l, int r, int x, int y)
{
	if (l == r)
	{
		t[id] ^= 1; 
		return ;
	}
	
	int mid = l + r >> 1;
	
	update(id << 1, l, mid, x, y);
	update(id << 1 | 1, mid + 1, r, x, y);
	
	t[id] = t[id << 1] + t[id << 1 | 1];
}

int query(int id, int l, int r, int x, int y)
{
	int ans = 0;
	if (x <= l && y >= r)//如果当前区间(l,r)在查询区间中 
	{
		return t[id];
	}
	int mid = l + r >> 1;
	if (x <= mid)
	{
		ans += query(id << 1, l, mid, x, y);
	}
	if(y > mid)
	{
		ans += query(id << 1 | 1, mid + 1, r, x, y);
	}
	return ans;
}
signed main()
{
	cin >> n >> m;
	for (int i = 1; i <= m; i++)
	{
		
		int op, x, y;
		cin >> op >> x >> y;
		if (op == 0) update(1, 1, n, x, y);
		else
		{
			cout << query(1, 1, n, x, y) << endl; 
		}
	}
	return 0; 
}
2024/12/3 19:18
加载中...