AC鸭有一个神奇的密码锁,这个密码锁由 n 个红色按钮,m 个蓝色按钮,以及一个 n∗m 大小的显示屏。显示屏中的每个位置可以显示 0/1,初始为 0.
设置密码时,按下第 i 个红色按钮,显示屏上的第 i 行中的所有数字都会切换一次状态( 0 变成 1,1 变成 0 ),按下第 j 个蓝色按钮,第 j 列的所有数字会切换一次状态.
给出AC鸭对按钮的 k 次操作,求最终密码锁显示屏上的所有数字之和。
第一行输入三个整数 n,m,k,表示显示屏的大小与操作数。
接下来给出 k 个操作,每个操作输入一行,为一个字符串 s 和一个整数 x,s 为 red 代表按下第 x 个红色按钮,为 blue 代表按下第 x 个蓝色按钮。
输入一个 n∗m 的矩阵,其中只包含 0 或 1,表示最后显示屏上的数字之和。
3 4 5
blue 3
red 2
red 1
blue 2
blue 3
7
1<=n,m,k<=300000
#include<iostream>
#include<vector>
using namespace std;
int n,m,k;
vector<int>a[300001];
int main(){
cin>>n>>m>>k;
for(int i=1;i<=n;i++)
a[i].resize(3010,0);
while(k--){
int x;
string op;
cin>>op;
if(op=="blue"){
cin>>x;
for(int i=1;i<=n;i++)
if(a[i][x]==1)a[i][x]=0;
else a[i][x]=1;
}
else{
cin>>x;
for(int i=1;i<=m;i++)
if(a[x][i]==1)a[x][i]=0;
else a[x][i]=1;
}
}
int res=0;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
if(a[i][j])res++;
cout<<res<<endl;
return 0;
}
谢谢各位大佬!!