首页 > 其他分享 >P9023

P9023

时间:2023-11-01 10:22:49浏览次数:28  
标签:int 样例 矩阵 一行 P9023 col row

题目描述

维护一个 \(01\) 矩阵,初始矩阵全为 \(0\)。

每次操作会将一行或一列反转(\(0\) 变成 \(1\),\(1\) 变成 \(0\))。

输出最后有多少个 \(1\)。

输入格式

第一行 \(M\),表示矩阵行数。

第二行 \(N\),表示矩阵列数。

第三行 \(K\),表示操作个数。

接下来 \(K\) 行,每行一个字符与一个数字。字符为 R 则表示操作某一行,C 表示一列。数字表示哪一行或哪一列。

输出格式

一行一个数字,表示最终 \(1\) 的个数。

样例 #1

样例输入 #1

3
3
2
R 1
C 1

样例输出 #1

4

样例 #2

样例输入 #2

4
5
7
R 3
C 1
C 2
R 2
R 2
C 1
R 4

样例输出 #2

10

提示

样例解释:

011           01000
100           01000
100           10111
              10111

\[M\times N\leq 5000000,K\leq 1000000 \]

译自 CCC2021 J5/S2

代码如下


#include<bits/stdc++.h>
using namespace std;
int main(){
    int n;//列数
    int m;//行数
    int k;//操作个数
    cin>>m>>n>>k;
    int row[m+1];
    int col[n+1];

    memset(row,0,sizeof row);
    memset(col,0,sizeof col);
    while(k--){
        char t;
        int x;
        cin>>t>>x;
        if(t=='R'){
           row[x]=!row[x];
        }else{
            col[x]=!col[x];
        }

    }
    int t1=0;
    for(int i=1;i<=n;i++){
        t1+=col[i];
    }

    int t=0;
    for(int i=1;i<=m;i++){
        t+=row[i];
    }

    long long num=t*n+t1*m-2*t*t1;
    cout<<num<<endl;
    return 0;
}

标签:int,样例,矩阵,一行,P9023,col,row
From: https://www.cnblogs.com/mujianyu/p/17802431.html

相关文章