设第i行上所有车的权值异或和为Ai,第j列上所有车的权值异或和为Bj ,一个格子(i,j)是否被控制就是Ai xor Bj>0,即 Ai != Bj 。于是只要减去 Ai=Bj 的情况就行了。
一个车的移动只会导致两个 Ai 和 Bj 的改变维护一下答案就行了。
用map维护cntA[k]表示Ai=k的i有多少个。
#include<bits/stdc++.h>
#define int long long
using namespace std;
typedef pair<int,int> pai;
map<int,int> a1,a2,b1,b2;
map<pai,int> mapp;
int n,k,p,v;
void read(int &x)
{
x=0;
char s=getchar();
while(s<'0'||s>'9') s