首页 > 其他分享 >CodeForces 1983B Corner Twist

CodeForces 1983B Corner Twist

时间:2024-07-16 14:51:50浏览次数:8  
标签:1983B int CodeForces 网格 Twist Corner

题目链接:CodeForces 1983B【Corner Twist】



思路

       可以发现操作一次,被操作位置的对应每一横行和每一纵行的加减数都是3,所以可以根据网格a和b的横纵状态确定是否通过操作使得网格a到达网格b。


代码

#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int N = 5e2 + 10;

int a[N][N], b[N][N];
int main() {
  int t;
  cin >> t;
  while (t--) {
    memset(a, 0, sizeof a);
    memset(b, 0, sizeof b);
    int n, m;
    cin >> n >> m;
    for (int i = 1; i <= n; i++) {
      string s;
      cin >> s;
      for (int j = 0; j < m; j++) {
        a[i][j + 1] = s[j] - '0';
        a[i][j + 1] = a[i][j + 1] + a[i - 1][j + 1] + a[i][j] - a[i - 1][j];
      }
    }
    
    for (int i = 1; i <= n; i++) {
      a[i][m + 1] = a[i][m] - a[i - 1][m];
    }
    for (int i = 1; i <= m; i++) {
      a[n + 1][i] = a[n][i] - a[n][i - 1];
    }

    for (int i = 1; i <= n; i++) {
      string s;
      cin >> s;
      for (int j = 0; j < m; j++) {
        b[i][j + 1] = s[j] - '0';
        b[i][j + 1] = b[i][j + 1] + b[i - 1][j + 1] + b[i][j] - b[i - 1][j];
      }
    }

    for (int i = 1; i <= n; i++) {
      b[i][m + 1] = b[i][m] - b[i - 1][m];
    }
    for (int i = 1; i <= m; i++) {
      b[n + 1][i] = b[n][i] - b[n][i - 1];
    }
    
    int flag = 0;
    for (int i = 1; i <= n; i++) {
      b[i][m + 1] = b[i][m] - b[i - 1][m];
      if ((b[i][m + 1] - a[i][m + 1]) % 3 != 0) {
        cout << "NO" << endl;
        flag = 1;
        break;
      }
    }

    if (flag) {
      continue;
    }

    for (int i = 1; i <= m; i++) {
      b[n + 1][i] = b[n][i] - b[n][i - 1];
      if ((b[n + 1][i] - a[n + 1][i]) % 3 != 0) {
        cout << "NO" << endl;
        flag = 1;
        break;
      }
    }

    if (flag) {
      continue;
    }

    cout << "YES" << endl;
  }
  
  return 0;
}

标签:1983B,int,CodeForces,网格,Twist,Corner
From: https://www.cnblogs.com/againss/p/18305216

相关文章

  • twisted spawnProcess
     reactor.spawnProcess 是 Twisted 框架中用于创建新进程的方法。 以下是对其参数的一些解释: pp:这通常是一个实现了 IProcessProtocol 接口的对象,用于处理与新创建进程的交互。sys.executable:指定要执行的程序,这里使用了Python解释器自身。args:一个列表,包含要传......
  • ros2 slam - 订阅ROS2 Twist
    本节我们结合上一节电机控制以及前面章节的MicroROS话题订阅部分知识点,来实现一个可以用键盘遥控的小车。新建工程example24_ros2_car 修改配置[env:featheresp32];这是一个环境配置标签,指定了代码将运行的硬件平台和框架platform=espressif32;指定了使用的平台为E......
  • A Twisted Path to Renown联机报错/无法联机的解决方法
    成名之路/ATwistedPathtoRenown这款游戏的游戏背景是美国西部,包含了PvE、PvP成分,并且比较有意思的一点是,由于成名之路旨在还原年代感和真实感,所以玩家基本上没有全自动的武器道具或者能连发的,基本就是单发武器,也有弓箭可以选择。这款游戏也是比较像猎杀对决和塔科夫,目前游......
  • Twisted
    Twisted⏲️ReleaseDate//2020-10-15✔️MD5//421465f7ccfc34907fd8b7fa38f46dbc☠Root//219......
  • A* 算法、PathFinding问题中的 allow diagonal 和 don't cross corners,以及 .map文件
    地址:https://webdocs.cs.ualberta.ca/~nathanst/papers/benchmarks.pdf关于地图文件:.map文件的格式参考:https://movingai.com/benchmarks/formats.html......
  • scrapy框架之Twisted
     ①getPage11#socket对象(如果下载完成..自动从事件循环中移除)22fromtwisted.web.clientimportgetPage详解:1defgetPage(url,contextFactory=None,*args,**kwargs):2"""3Downloadawebpageasastring.45Downloadapage.Retu......
  • Ubuntu 10.04 安装Twisted、Scrapy爬虫框架
    Ubuntu10.04安装Twisted、Scrapy爬虫框架Scrapy,Python开发的一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结ScrapyPython爬虫框架logo[1]构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。Scrapy吸引人的地方在于它是一个......
  • Twisted @defer.inlineCallbacks
    @defer.inlineCallbacks是Twisted框架中的一个装饰器,用于定义基于协程的异步函数。在使用Twisted进行异步编程时,常见的方式是使用回调函数来处理异步操作的结果。但是使用回调函数可能会导致代码复杂、难以维护和阅读。因此,Twisted提供了@defer.inlineCallbacks装饰器,通......
  • twisted some demo
      fromtwisted.internetimportdefer,reactorfromtwisted.web.clientimportgetPagedefresponse(*args,**kwargs):print('返回页面内容')defcallback(*args,**kwargs):print('执行了一个回调',args)@defer.inlineCallbacksdefsta......
  • 如何只为 UIView 的左上角和右上角设置 cornerRadius?
    有没有办法cornerRadius只设置a的左上角和右上角UIView?我尝试了以下操作,但最终再也看不到视图了。UIView*view=[[UIViewalloc]initWithFrame:frame];CALayer*la......