100tpsWA on 最后一个点求调
查看原帖
100tpsWA on 最后一个点求调
1023246
wyh12623楼主2025/7/23 14:49
#include<bits/stdc++.h>
using namespace std;
int n,m,a[100010],b[100010],c[100010];
int main()
{
	cin>>n>>m;
	int s=sqrt(n);
	for(int i=1;i<=m;i++)
	{
		int l,r,z,ans=0;
		cin>>z>>l>>r;
		if(z==0)
		{
			while(l<=r)
			{
				if(l%s==1&&(l+s-1<=r||r==n))
				{
					b[(l-1)/s+1]++;
					l+=s;
				}
				else
				{
					a[l]++;
					if(a[l]%2==0)
						c[(l-1)/s+1]--;
					else
						c[(l-1)/s+1]++;
					l++;
				}
			}
		}
		else
		{
			while(l<=r)
			{
				if(l%s==1&&(l+s-1<=r||r==n))
				{
					if(b[(l-1)/s+1]%2==1)
						ans+=(s-c[(l-1)/s+1]);
					else
						ans+=c[(l-1)/s+1];
					l+=s;
				}
				else
				{
					ans+=(a[l]+b[(l-1)/s+1])%2;
					l++;
				}
			}
			cout<<ans<<"\n";
		}
	}
	return 0;
}
2025/7/23 14:49
加载中...