题目链接:点击这里
超时。
开两个数组分别记录当前行或列是否有操作,再开一个二维数组计算每个灯在操作后的亮灭情况(用来调整行和列所带来的一次操作而不是两次操作)。
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1000+10;
int a[maxn], b[maxn];
int c[maxn][maxn];
int main()
{
int n, m, q, x, y;
scanf("%d %d", &n, &m);
scanf("%d", &q);
while(q--)
{
scanf("%d %d", &x, &y);
c[x][y] ^= 1;
a[x] ^= 1;
b[y] ^= 1;
}
int ans = 0;
for(int i = 1; i <= n; i++)
for(int j = 1; j <= m; j++)
ans += a[i]^b[j]^c[i][j];
printf("%d\n", ans);
return 0;
}