题解:P9298 [POI2020] Tablica binarna
这题有点像二维前缀和(个人认为)。
思路比较简单,修改奇数次的点,不用改,,修改偶数次,就翻转一次,。
反转的位置有四个,详见代码:
#include<bits/stdc++.h>
using namespace std;
bool c[1005][1005];
int ans, n, m, q;
void work(int x, int y){
if(!(x >= 1 && x <= n && y >= 1 && y <= m)) return;
if(c[x][y]) ans --;
else ans ++;
c[x][y] ^= 1;//修改0为1,1为0,这里使用位运算,加速且偷懒
}
int main(){
cin >> n >> m >> q;
while(q --){
int x1, x2, y1, y2;
cin >> x1 >> y1 >> x2 >> y2;
work(x1 - 1, y1 - 1);//四个位置
work(x1 - 1, y2);
work(x2, y1 - 1);
work(x2, y2);
cout << ans << "\n";
}
return 0;
}
posted on 2024-06-22 22:06 zhangzirui66 阅读(7) 评论(0) 收藏 举报 来源