zoukankan      html  css  js  c++  java
  • cf-Global Round2-C. Ramesses and Corner Inversion(思维)

    题目链接:http://codeforces.com/contest/1119/problem/C

    题意:给两个同型的由0、1组成的矩阵A、B,问A能否经过指定的操作变成B,指定操作为在矩阵A中选定一个子矩阵(行数,列数均>=2),该子矩阵的四个角的值能翻转,即1->0,0->1。

    思路:结论--只要A、B的所有行的值之和同奇偶,所有列的值之和同奇偶就输出Yes,否则输出No。证明:经过操作(1,1,x,y) (x>1,y>1)可将A中非第一行、第一列的元素变成和B一致,即Axy=Bxy。然后因为变化的过程每一行、每一列的奇偶不变,所以此时A、B的第一行、第一列的值自然也相等。

    AC代码:

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 
     4 int n,m,rs[2][505],cs[2][505],tmp;
     5 
     6 int main(){
     7     scanf("%d%d",&n,&m);
     8     for(int i=0;i<2;++i)
     9         for(int j=0;j<n;++j)
    10             for(int k=0;k<m;++k){
    11                 scanf("%d",&tmp);
    12                 rs[i][j]^=tmp;
    13                 cs[i][k]^=tmp;
    14             }
    15     int flag=1;
    16     for(int i=0;i<n;++i)
    17         if(rs[0][i]!=rs[1][i]){
    18             flag=0;
    19             break;
    20         }
    21     if(flag){
    22         for(int i=0;i<m;++i)
    23             if(cs[0][i]!=cs[1][i]){
    24                 flag=0;
    25                 break;
    26             }
    27     }
    28     if(flag) printf("Yes
    ");
    29     else printf("No
    ");
    30     return 0;
    31 }
  • 相关阅读:
    sqlserver查询某个数据库有多少个表 ,存过,函数,视图
    C# 金额转为大写金额
    C# TextBox中只能输入数字的几种常用方法(C#)
    C# 设置Excel单元格属性
    MS SQL 维护小记
    webapi demo
    远程 TeamViewer
    https://github.com/
    C# Fun 类似委托
    技术点文章收集
  • 原文地址:https://www.cnblogs.com/FrankChen831X/p/10672868.html
Copyright © 2011-2022 走看看