【题目描述】

RHL最近迷上一个小游戏:Flip it。游戏的规则很简单,在一个N*M的格子上,有一些格子是黑色,有一些是白色。每选择一个格子按一次,格子以及周围边相邻的格子都会翻转颜色(边相邻指至少与该格子有一条公共边的格子),黑变白,白变黑。

RHL希望把所有格子都变成白色的。不幸的是,有一些格子坏掉了,无法被按下。这时,它可以完成游戏吗?

【输入格式】

第一行一个整数T,表示T组数据。

每组数据开始于三个整数n,m,k,分别表示格子的高度和宽度、坏掉格子的个数。接下来的n行,每行一个长度m的字符串,表示格子状态为’B’或‘W’。最后k行,每行两个整数Xi,Yi(1≤Xi≤n,1≤Yi≤m),表示坏掉的格子。

【输出格式】

对于每组数据,先输出一行Case #i: (1≤i≤T)

如果可以成功,输出YES,否则输出NO。

【样例输入】

2

3 3 0

WBW

BBB

WBW

3 3 2

WBW

BBB

WBW

2 2

3 2

【样例输出】

Case #1:

YES

Case #2:

NO

【数据范围】

30%,n,m,k<=10

100%,n,m,k<=256,T<=10

http://www.cnblogs.com/chenyushuo/p/4685182.html

和这个类似的设个xor方程组,对于不能按的方块,直接将它定为0即可

code:

 #include<cstdio>
#include<iostream>
#include<cmath>
#include<cstring>
#include<algorithm>
#define maxn 260
using namespace std;
char ch,s[maxn];
int T,n,m,N,M,k,x,y;
unsigned int c[maxn][maxn][maxn>>],a[maxn<<][maxn>>];
bool col[maxn][maxn],ok,d[maxn][maxn],b[maxn<<];
inline void read(int &x){
for (ok=,ch=getchar();!isdigit(ch);ch=getchar()) if (ch=='-') ok=;
for (x=;isdigit(ch);x=x*+ch-'',ch=getchar());
if (ok) x=-x;
}
bool gauss(){
int i,j,k,p,q;
for (i=,k=;i<N;i++){
for (p=(<<(i&)),j=k;j<=M&&!(a[j][i>>]&p);j++);
if (j<=M){
for (q=(i>>);q<=((N-)>>);q++) swap(a[k][q],a[j][q]);
swap(b[k],b[j]);
for (j=j+;j<=M;j++)
if (a[j][i>>]&p){
for (q=(i>>);q<=((N-)>>);q++) a[j][q]^=a[k][q];
b[j]^=b[k];
}
k++;
}
}
for (;k<=M;k++) if (b[k]) return false;
return true;
}
int main(){
read(T);
for (int t=;t<=T;t++){
read(m),read(n),read(k),N=n,M=n;
for (int i=;i<=m;i++){
scanf("%s",s+);
for (int j=;j<=n;j++) col[i][j]=(s[j]=='B');
}
for (int i=;i<=n;i++) c[][i][(i-)>>]=(<<((i-)&));
for (int i=;i<=m;i++)
for (int j=;j<=n;j++){
for (int k=;k<=((n-)>>);k++)
c[i][j][k]=c[i-][j-][k]^c[i-][j][k]^c[i-][j+][k]^c[i-][j][k];
d[i][j]=d[i-][j-]^d[i-][j]^d[i-][j+]^d[i-][j]^col[i-][j];
}
for (int i=;i<=n;i++){
for (int j=;j<=((n-)>>);j++)
a[i][j]=c[m][i][j]^c[m][i-][j]^c[m][i+][j]^c[m-][i][j];
b[i]=col[m][i]^d[m][i-]^d[m][i]^d[m][i+]^d[m-][i];
}
while (k--){
read(x),read(y),++M;
for (int i=;i<=((n-)>>);i++) a[M][i]=c[x][y][i];
b[M]=d[x][y];
}
printf("Case #%d:\n",t);
if (gauss()) puts("YES");
else puts("NO");
}
return ;
}

bzoj4171 or 省队集训day3 chess: Rhl的游戏的更多相关文章

  1. 省队集训Day3 light

    [问题描述] “若是万一琪露诺(俗称 rhl)进行攻击,什么都好,冷静地回答她的问题来吸引她.对方表现出兴趣的话,那就慢慢地反问.在她考虑答案的时候,趁机逃吧.就算是很简单的问题,她一定也答不上来.” ...

  2. 省队集训Day3 tree

    [题目描述] RHL 有一天看到 lmc 在玩一个游戏. “愚蠢的人类哟,what are you doing”,RHL 说. “我在玩一个游戏.现在这里有一个有 n 个结点的有根树,其中有 m 个叶 ...

  3. FJ省队集训DAY3 T2

    思路:如果一个DAG要的路径上只要一条边去切掉,那么要怎么求?很容易就想到最小割,但是如果直接做最小割会走出重复的部分,那我们就这样:反向边设为inf,这样最小割的时候就不会割到了,判断无解我们直接用 ...

  4. FJ省队集训DAY3 T1

    思路:我们考虑如果取掉一个部分,那么能影响到最优解的只有离它最近的那两个部分. 因此我们考虑堆维护最小的部分,离散化离散掉区间,然后用线段树维护区间有没有雪,最后用平衡树在线段的左右端点上面维护最小的 ...

  5. 省队集训 Day3 吴清华

    [题目大意] 给网格图,共有$n * n$个关键节点,横向.纵向距离均为$d$,那么网格总长度和宽度均为$(n+1) * d + 1$,最外围一圈除了四角是终止节点.要求每个关键节点都要通过线连向终止 ...

  6. 省队集训 Day3 陈姚班

    [题目大意] 给一张网格图,上往下有流量限制,下往上没有,左往右有流量限制. $n * m \leq 2.5 * 10^6$ [题解] 考场直接上最大流,50分.竟然傻逼没看出狼抓兔子. 平面图转对偶 ...

  7. 省队集训 Day3 杨北大

    [题目大意] 给出平面上$n$个点$(x_i, y_i)$,请选择一个不在这$n$个点之内的点$(X, Y)$,定义$(X, Y)$的价值为往上下左右四个方向射出去直线,经过$n$个点中的数量的最小值 ...

  8. JS省队集训记

    不知不觉省队集训已经结束,离noi也越来越近了呢 论考前实战训练的重要性,让我随便总结一下这几天的考试 Day 1 T1 唉,感觉跟xj测试很像啊?meet in middle,不过这种题不多测是什么 ...

  9. HN2018省队集训

    HN2018省队集训 Day1 今天的题目来自于雅礼的高二学长\(dy0607\). 压缩包下载 密码: 27n7 流水账 震惊!穿着该校校服竟然在四大名校畅通无阻?霸主地位已定? \(7:10\)从 ...

随机推荐

  1. IFTT-意大利金融交易税

    港交所公告,IFTT目前适用于Prada股份及其4只权证,所有于今年3月1日或之后买入Prada的投资者均要缴付IFTT.就股份而言,IFTT税率为交易价值的0.22%(2014年1月1日起将降至0. ...

  2. windows设置多长时间后自动关机 分类: windows常用小技巧 2014-04-15 09:35 230人阅读 评论(0) 收藏

    分二步: 第一步:点击windows键,在"搜索程序和文件"的文本框输入:cmd 第二步:输入:shutdown -s -t          (设置电脑一小时后自动关机) 备注: ...

  3. POJ1184-------操作分离的BFS

    题目地址:http://poj.org/problem?id=1184 题目意思: 给你两个6位数,一个是起始值,一个最终值 初始光标在最左边 你可以左移或者右移光变 在光标处+1或者-1 在光标处和 ...

  4. VMware下安装Ubuntu,那么必须安装VMware-tools,才能获得更好的体验,包括屏幕分辨率、声音、和windows共享剪贴板等等

    在VMware下安装Ubuntu,那么必须安装VMware-tools,才能获得更好的体验,包括屏幕分辨率.声音.和windows共享剪贴板等等. 个人觉得安装vmware-tools很重要的几点: ...

  5. String.Split()函数

    我们在上次学习到了 String.Join函数(http://blog.csdn.net/zhvsby/archive/2008/11/28/3404704.aspx),当中用到了String.SPl ...

  6. Win7下Qt5.2中使用OpenGL的glu函数库无法使用的解决方案

          最近在Window7使用Qt5.2学习OpenGL时,出现了以OpenGL中glu开头的函数库无法使用的错误,例如: 'gluPerspective'  was not declared ...

  7. [转] 设计模式 -- Facade

    PS:Façade模式注重简化接口,Adapter模式注重转换接口,Bridge模式注重分离接口(抽象)与其实现,Decorator模式注重稳定接口的前提下为对象扩展功能. Facade模式 Faca ...

  8. Java基础知识强化之IO流笔记14:递归之输出指定目录下所有java文件绝对路径的案例

    1. 需求:输出指定目录下的所以.java结尾文件的绝对路径的案例:  分析:  A:封装目录  B:获取该目录下的所有文件和文件夹的File数组  C:遍历这个File数组,得到每一个File对象的 ...

  9. windows服务安装(System.ComponentModel.Win32Exception:远程过程调用失败)

    “安装”阶段发生异常.System.ComponentModel.Win32Exception:远程过程调用失败 附上提示信息C:\Windows\Microsoft.NET\Framework\v4 ...

  10. python中的generator, iterator, iterabel

    先来看看如果遇到一个对象,如何判断其是否是这三种类型: from types import GeneratorType from collectiuons import Iterable, Itera ...