Problem H

Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other)
Total Submission(s) : 77   Accepted Submission(s) : 27

Font: Times New Roman | Verdana | Georgia

Font Size: ← →

Problem Description

爱情产生动力,灯泡照亮前程。

爱情公寓是一个情侣们都向往的地方,导致现在整幢公寓都已经住满了人。公寓一共有n(3<=n<=100)层,每层有m(3<=m<=6)个房间,从外面看上去就是一个n*m的网格。每当傍晚降临,家家户户都要开灯,用灯泡照亮他们美好的未来。可惜的是灯泡也有傲娇的时候,尤其是看到这么多情侣,所以只有一部分的房间的灯被打开了,还有一部分的灯无论房间的开关怎么动都是暗的。这个时候,身为ACMer的你勇敢的hack进了公寓的电路系统,发现这里有另外一套开关,它的规则是这样:当你改变[i,j]号灯的状态时,[i,j]上下左右的四个灯(如果有的话)也随之改变状态。改变状态的意思是从开到关,或者从关到开。聪明的你能不能通过一系列的操作使得整幢公寓的灯泡都亮起来呢?

Input

输入的第一行有一个数T,表示接下来有T组测试数据。

对于每组测试数据,第一行有两个数n和m,描述见上。接下来有n行,每行有m个数,为0或1,0表示灯暗,1表示灯亮。

Output

对于每组测试数据,输出一行,如果能通过一些列操作使所有的灯都亮起来那么输出“YES”(不含引号),否则输出“NO”(不含引号)。 

Sample Input

2
3 3
0 0 0
0 1 0
0 0 0
3 3
0 0 0
0 0 0
0 0 0

Sample Output

YES
YES

类似

http://blog.csdn.net/zy691357966/article/details/40082595

代码如下:

#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <ctime>
#include <algorithm>
#include <iostream>
#include <sstream>
#include <string>
#define oo 0x13131313
using namespace std;
void init()
{
freopen("a.in","r",stdin);
freopen("a.out","w",stdout);
}
int n,m;
int MAP[105][10];
int A[105][10];
int fx[5]={0,0,0,1,-1},fy[5]={0,1,-1,0,0};
void COPY()
{
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{
A[i][j]=MAP[i][j];
}
}
void CHANGE(int i,int j)
{
A[i][j]=A[i][j]^1;
for(int k=1;k<=4;k++)
{
A[i+fx[k]][j+fy[k]]^=1;
}
}
void input()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{
scanf("%d",&MAP[i][j]);
}
}
int dfs(int line)
{
if(line==n+1) {
int OK=1;
for(int i=1;i<=m;i++)
if(A[line-1][i]==0) OK=0;
if(OK) return 1;
else return 0;
}
for(int i=1;i<=m;i++)
{
if(A[line-1][i]==0) CHANGE(line,i);
}
return dfs(line+1);
}
void solve()
{
int OK=0;
for(int i=0;i<=(1<<m)-1;i++)
{
COPY();
for(int j=1;j<=m;j++)
{
int temp=(i>>(j-1))&1;
if(temp==1)
{
CHANGE(1,j);
}
}
if(dfs(2))
{
OK=1;
break;
}
}
if(OK) printf("YES\n");
else printf("NO\n");
}
int main()
{
//init();
int T;
cin>>T;
while(T--)
{
input();
solve();
}
}


【部分枚举】【3-21个人赛】ProblemH的更多相关文章

  1. Object备忘录

    1.Object.assign(target,...source) 方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象.它将返回目标对象. 2.Object.create()方法创建一个新对 ...

  2. 第8章 自己写库-构建库函数雏形—零死角玩转STM32-F429系列

    第8章     自己写库—构建库函数雏形 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fi ...

  3. 设计模式 UML & java code

    A: 创造性模式 1. 工厂方法模式(FactoryMethod) 1.1 类图 1.2 代码1 public interface Pet { public String petSound(); } ...

  4. (转)数位dp

    原博客 https://blog.csdn.net/wust_zzwh/article/details/52100392 建议原博客看到hdu 不要62,然后看我分割线后两道题,然后再回来看原博.-- ...

  5. 数位dp 简单入门

    推荐博客 推荐博客 数位dp是一种计数用的dp,一般就是要统计一个区间[le,ri]内满足一些条件数的个数.所谓数位dp,字面意思就是在数位上进行dp咯.数位还算是比较好听的名字,数位的含义:一个数有 ...

  6. 数位dp总结 之 从入门到模板

    转发自WUST_WenHao巨巨的博客 基础篇 数位dp是一种计数用的dp,一般就是要统计一个区间[le,ri]内满足一些条件数的个数.所谓数位dp,字面意思就是在数位上进行dp咯.数位还算是比较好听 ...

  7. P2480 [SDOI2010]古代猪文

    P2480 [SDOI2010]古代猪文 比较综合的一题 前置:Lucas 定理,crt 求的是: \[g^x\bmod 999911659,\text{其中}x=\sum_{d\mid n}\tbi ...

  8. 数位dp(贴一个模板=。=)

    emmmm,之前看到大佬的博客感觉这个模板挺有用的,就贴了一个= = 然后解释什么的都有了就...... 数位dp一般应用于: 求出在给定区间[A,B]内,符合条件P(i)的数i的个数. 条件P(i) ...

  9. 掌握数位dp

    最近遇到了数位dp题目,于是就屁颠屁颠的跑过来学习数位dp了~ "在信息学竞赛中,有这样一类问题:求给定区间中,满足给定条件的某个D 进制数或此类数的数量.所求的限定条件往往与数位有关,例如 ...

  10. 【题解】Luogu p2964 BZOJ 2017[Usaco2009 Nov]硬币游戏

    题目描述 Farmer John's cows like to play coin games so FJ has invented with a new two-player coin game c ...

随机推荐

  1. IOS 下雪动画修改版本

    #define SNOW_IMAGENAME @"snow" #define IMAGE_X arc4random()%(int)Main_Screen_Width #define ...

  2. Linux-0.11内核源代码分析系列:内存管理get_free_page()函数分析

    Linux-0.11内存管理模块是源码中比較难以理解的部分,如今把笔者个人的理解发表 先发Linux-0.11内核内存管理get_free_page()函数分析 有时间再写其它函数或者文件的:) /* ...

  3. LR如何利用siteScope监控MySQL性能

    本次实验,是在自己的电脑上使用APMServ5.2.6部署Discuz2.X论坛下,对该论坛的数据库MySQL5.1进行性能测试的,下面讲述LoadRunner在设计场景时,如何利用siteScope ...

  4. wamp安装

    下载之后双击文件进行安装选择:I accept the agreement ,点击Next. 一直单击NEXT 安装完成后运行wamp,在桌面右下角即会出现wamp的图标,图标最初是红色的,然后变为橙 ...

  5. 原生的UITableViewCell高度自适应,textLabel自动换行显示

    /* * 设置子项cell **/ - (UITableViewCell *)getChildCell:(UITableView *)tableView and:(NSIndexPath *)inde ...

  6. HDU 1068 - Girls and Boys

    求一个集合最多几个人,其之间任意两人没有暧昧关系. 二分图匹配 最大独立集 = 总点数 - 最大匹配数 匈牙利算法 因为每个同学都在二分图的两侧 当 A与B匹配时,B与A也匹配 所以 所求的最大匹配数 ...

  7. delphi按钮控件的default属性

    delphi按钮控件的default属性用于设置默认命令按钮,.设置为true时,按[Enter键]相当于用鼠标单击了该按钮 .窗口中如果有多个按钮的default是true的话,就根据tabinde ...

  8. 2015.4.16-SQL-内连接与外连接

    1.内连接 如图: 关键字 inner join 2.外连接 分为左外连接 和右外连接,即如果是左外连接,即使左面没有值,也会显示为null, 右外连接也如此 关键字 left join ; righ ...

  9. Redis 作为缓存服务器的配置

    随着redis的发展,越来越多的架构用它取代了memcached作为缓存服务器的角色,它有几个很突出的特点:1. 除了Hash,还提供了Sorted Set, List等数据结构2. 可以持久化到磁盘 ...

  10. JAVA异常使用_每个人都曾用过、但未必都用得好

    一.抛出异常 vs. 返回错误代码 有人说“Well, an exception is a goto.”,但也有人言“makes the code simpler by visibly separat ...