水题。
#pragma GCC optimize(2)
#include <bits/stdc++.h>
#define endl '\n'
#define ll long long
using namespace std;
ll tree[1000050],a[1000050],n,m,ans,x;
ll lowbit(ll x)
{
return x&-x;
}
void add(ll i,ll x)
{
while(i<=n*n)
{
tree[i]+=x;
i+=lowbit(i);
}
}
ll sum(ll i)
{
ll res=0;
while(i>0)
{
res+=tree[i];
i-=lowbit(i);
}
return res;
}
ll range_sum(ll l,ll r)
{
return sum(r)-sum(l-1);
}
int main()
{
ios::sync_with_stdio(0);cin.tie(0), cout.tie(0);
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
cin>>a[(i-1)*n+j];
if(a[(i-1)*n+j]==1)add((i-1)*n+j,1);
}
while(m--)
{
int flag=0;cin>>flag;
if(flag==1){
int x1,y1;cin>>x1>>y1;
if(a[(x1-1)*n+y1]==1){
a[(x1-1)*n+y1]=0;
add((x1-1)*n+y1,-1);
}
else if(a[(x1-1)*n+y1]==0){
a[(x1-1)*n+y1]=1;
add((x1-1)*n+y1,1);
}
}
else if(flag==2){
int x1,y1,x2,y2;cin>>x1>>y1>>x2>>y2;
ll ans=0;
for(int i=x1;i<=x2;i++)
ans+=range_sum((i-1)*n+y1,(i-1)*n+y2);
cout<<ans<<endl;
}
}
return 0;
}
京公网安备 11010502036488号