题目地址:戳这里
思路: 考察整体的思路:
可以看出,对p[i][j] 如果i!=j 那么a[i][j]*a[j][i] 一定会在取出第i行时,和取出第j行时,出现两次 ,这样mod 2 就对答案没有贡献了
所以改变一次,只看对角线上的元素
那么刚好,每次操作都改变一次答案0到1 ,1到0;
用异或可以完成
#include<iostream>
#include<cstdio>
using namespace std;
int p[1005][1005];
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
{
scanf("%d",&p[i][j]);
}
int ans=0;
for(int i=0;i<n;i++)
ans+=p[i][i];
ans%=2;
int opcode;
int operand;
int q;
cin>>q;
for(int i=0;i<q;i++)
{
scanf("%d",&opcode);
if(opcode==3)
cout<<ans;
else
{
scanf("%d",&operand);
ans=ans^1;
}
}
}