分析一遍样例可以发现 a[k][k]*a[k][k]的只有1次,其他的都会有2次,相互抵消。
#include<stdio.h>
const int N=1002;
int a[N][N],n;
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
scanf("%d",&a[i][j]);
int ans=0;
for(int i=1;i<=n;i++)
ans+=a[i][i];
int Q,op,k;
scanf("%d",&Q);
while(Q--){
scanf("%d",&op);
if(op==1||op==2){
scanf("%d",&k);
if(a[k][k]==0)
ans++;
else ans--;
a[k][k]=1-a[k][k];
}
else if(op==3)
printf("%d",ans%2);
}
return 0;
}