题目大意:给出一个黑白图,你可以选定一个俄罗斯方块的区域,黑白翻转,问能否变成白图

比较trick的题目,

首先可以想到,奇数个1肯定是无解的,所以考虑偶数个1

可以先讨论n是2的情况

当n为2时,其实除了m也等于2时需要特判外,都是可行的(因为你可以不断地往右侧推进,最后变成4个1)

所以n为偶数也是可行的

n为奇数时,可以把奇数行的1变到偶数行,所以也是可行的

最后就讨论n是1的情况,这个贪心往右侧走即可

(以及掌握了读入的优化技巧)

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int T, n, m;
int str[];
int read01() {
char c = getchar();
for(; c != '' && c != ''; c = getchar());
return c - '';
}
int main() {
cin>>T;
while(T--) {
scanf("%d %d", &n, &m);
int ans = ;
if(n == || m == ) {
n = (n > m ? n : m);
for(int i = ; i < n; i++)
str[i] = read01();
for(int i = ; i < n-; i++)
if(str[i]) {
str[i] ^= ;
str[i+] ^= ;
str[i+] ^= ;
str[i+] ^= ;
}
int f = ;
for(int i = ; i < n; i++) if(str[i]) f = ;
if(f) cout<<"No"<<endl;
else cout<<"Yes"<<endl;
continue;
}
for(int i = ; i < n; i++)
for(int j = ; j < m; j++)
ans += read01();
if(ans&) cout<<"No"<<endl;
else {
if(n == && m == ) {
if(ans == || ans == ) cout<<"Yes"<<endl;
else cout<<"No"<<endl;
continue;
}
cout<<"Yes"<<endl;
}
}
}

51nod 1851俄罗斯方块(trick)的更多相关文章

  1. 51nod 1851 俄罗斯方块

    玩过俄罗斯方块?那你知道俄罗斯方块共有七种吧(其实只有五种) 给一个黑白图,每次能将某些区域的格子黑白反转,至于某些区域的意思嘛,就是俄罗斯方块形状的区域咯(可水平翻转.上下翻转.旋转) 求能否将图变 ...

  2. 【51nod】1851 俄罗斯方块

    题解 最近一遇到神仙题一卡就好久--做点水题滋养一下自己吧= = 显然我们发现放一个方块的奇偶性不会改变,所以格子如果黑格子是奇数,那么就是No 我们发现每个2 × 3的方格里的2 × 1的黑格子都可 ...

  3. 51nod 1584 加权约数和 约数和函数小trick 莫比乌斯反演

    LINK:加权约数和 我曾经一度认为莫比乌斯反演都是板子题. 做过这道题我认输了 不是什么东西都是板子. 一个trick 设\(s(x)\)为x的约数和函数. 有 \(s(i\cdot j)=\sum ...

  4. 51NOD 1584 加权约数和 [莫比乌斯反演 转化 Trick]

    1584 加权约数和 题意:求\(\sum_{i=1}^{N} \sum_{j=1}^{N} {\max(i,j)\cdot \sigma(i\cdot j)}\) 多组数据\(n \le 10^6, ...

  5. 51nod 1812 树的双直径 题解【树形DP】【贪心】

    老了-稍微麻烦一点的树形DP都想不到了. 题目描述 给定一棵树,边权是整数 \(c_i\) ,找出两条不相交的链(没有公共点),使得链长的乘积最大(链长定义为这条链上所有边的权值之和,如果这条链只有 ...

  6. HDU 3485【101】 51nod 1668【010】 joj 2171【111】动态规划

    有一个只含0和1的长度为n的串,问不含有101的所有串的个数. ——不存在连续的101.010.111的字符串数量 HDU:https://cn.vjudge.net/problem/HDU-3485 ...

  7. 还是俄罗斯方块之android版

    前面的,口水话 请直接跳过. 虽然现在不比以前了 也没多少人气了,放到首页 都不到几百的点击量.也许博客园整体水平也是在往水的方向发展.不谈那些了,哥也曾经辉煌过 有过一天上千的点击量 ,哥也曾经有过 ...

  8. x01.Tetris: 俄罗斯方块

    最强大脑有个小孩玩俄罗斯方块游戏神乎其技,那么,就写一个吧,玩玩而已. 由于逻辑简单,又作了一些简化,所以代码并不多. using System; using System.Collections.G ...

  9. 【51Nod 1244】莫比乌斯函数之和

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1244 模板题... 杜教筛和基于质因子分解的筛法都写了一下模板. 杜教筛 ...

随机推荐

  1. ODBC error in PHP: “No tuples available at this result index”

    ODBC error in PHP: “No tuples available at this result index” 在执行存储过程的时候发生如题的错误,在stackoverflow上找到了相同 ...

  2. Hive初识(一)

    LOAD DATA语句 一般来说,在SQL创建表后,我们就可以使用INSERT语句插入数据.但在Hive中,可以使用LOAD DATA语句来插入数据. LOAD DATA [LOCAL] INPATH ...

  3. flask 中访问时后台错误 error: [Errno 32] Broken pipe

    解决办法:app.run(threaded=True) 个人理解:flask默认单线程,访问一个页面时会访问到很多页面,比如一些图片,加入参数使其为多线程

  4. 数据结构的C语言基础

    数据结构的C语言基础 1. 数据输出 printf()函数为格式输出函数,它存在于标准函数库中,在C语言程序中可以直接调用,但程序源文件的开头必须包含以下命令: #include < stdi ...

  5. Leecode刷题之旅-C语言/python-88合并两个有序数组

    /* * @lc app=leetcode.cn id=88 lang=c * * [88] 合并两个有序数组 * * https://leetcode-cn.com/problems/merge-s ...

  6. Unicode控制字符

    Unicode控制字符就是特殊的Unicode字符 控制字符转义代码对照表 Unicode-控制字符 ‎LRM ‏RLM ‍ZWJ ‌ZWNJ ‪LRE ‭LRO ‮RLO ‬PDF NADS  ...

  7. SGU 495

    #include<bits/stdc++.h> using namespace std; #define ll long long ; ; int n,m; double dp[N]; / ...

  8. OVERLAY(文字の上書き)

    OVERLAY 命令により.文字列が別の文字列によって上書きされます. OVERLAY c1 WITH c2 [ONLY str]. この命令により.項目 c1 のすべての位置のうち.str の中に出 ...

  9. intellij idea之git执行打标签(tag)和删除标签

    intellij idea 版本为2017.2.6 进入Version Control-->log 1.在之前版本中,右键,新建标签 2.输入标签名称,建议输入版本号的方式 3.push标签 由 ...

  10. hibernate 各历史版本下载 spring各历史版本下载

    hibernate 各历史版本下载http://sourceforge.net/projects/hibernate/files/ spring各历史版本下载http://www.springsour ...