给出5*6的位置,每个位置有一个灯,一开始每个灯有各自的状态,你可以选定一些位置使得所有与这个位置相邻以及位置本身的灯都取反。

输出合法方案。

本来是找高斯消元找到这个题目的,可是。。。。我发现可以直接状态压缩dfs,于是就水过了,高斯消元还是不会。怒坑。

枚举是这样的,当前6位数表示这一行每个灯的状态,由于当前这一排灯仅受相邻两排的影响,当我搜索到下一排的时候,判断对于当前这一排是否是一个合法的方案,及时剪枝。

一直扫下去就是答案了。

召唤代码君:

#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std; int a[][],ans[];
int T,n,m,cas=,c[];
int f[];
bool findans; bool check(int cur)
{
int tmp=ans[cur];
for (int i=; i<=; i++) f[i]=tmp&,tmp>>=;
for (int i=; i<=; i++){
tmp=(ans[cur-]&c[i])==(ans[cur+]&c[i])?:;
tmp^=a[cur][i]^f[i-]^f[i]^f[i+];
if (!tmp) return false;
}
return true;
} void dfs(int cur)
{
if (cur==){
if (check(cur)) findans=true;
return;
}
for (int i=; i<c[]; i++){
ans[cur+]=i;
if (cur> && !check(cur)) continue;
dfs(cur+);
if (findans) return;
}
} int main()
{
c[]=;
for (int i=; i<=; i++) c[i]=c[i-]+c[i-];
scanf("%d",&T);
while (T--)
{
findans=false;
for (int i=; i<=; i++)
for (int j=; j<=; j++) scanf("%d",&a[i][j]);
dfs();
printf("PUZZLE #%d\n",++cas);
for (int i=; i<=; i++){
printf("%d",ans[i]&);
for (int j=; j<=; j++) printf(" %d",(ans[i]&c[j])?:);
printf("\n");
}
}
return ;
}

POJ1222_EXTENDED LIGHTS OUT的更多相关文章

  1. HDOJ 4770 Lights Against Dudely

    状压+暴力搜索 Lights Against Dudely Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ...

  2. [我给Unity官方视频教程做中文字幕]beginner Graphics – Lessons系列之灯光介绍Lights

    [我给Unity官方视频教程做中文字幕]beginner Graphics – Lessons系列之灯光介绍Lights 既上一篇分享了中文字幕的摄像机介绍Cameras后,本篇分享一下第2个已完工的 ...

  3. poj1222 EXTENDED LIGHTS OUT 高斯消元||枚举

    Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 8481   Accepted: 5479 Description In an ...

  4. ACM: NBUT 1646 Internet of Lights and Switches - 二进制+map+vector

    NBUT 1646 Internet of Lights and Switches Time Limit:5000MS     Memory Limit:65535KB     64bit IO Fo ...

  5. HDU 4770 Lights Against DudelyLights

    Lights Against Dudely Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

  6. Traffic Lights

    Traffic Lights time limit per test 2 seconds memory limit per test 256 megabytes input standard inpu ...

  7. [BZOJ1659][Usaco2006 Mar]Lights Out 关灯

    [BZOJ1659][Usaco2006 Mar]Lights Out 关灯 试题描述 奶牛们喜欢在黑暗中睡觉.每天晚上,他们的牲口棚有L(3<=L<=50)盏灯,他们想让亮着的灯尽可能的 ...

  8. HDU 4770 Lights Against Dudely

    Lights Against Dudely Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

  9. Codeforces Round #240 (Div. 2)->A. Mashmokh and Lights

    A. Mashmokh and Lights time limit per test 1 second memory limit per test 256 megabytes input standa ...

随机推荐

  1. 25. Valid Palindrome

    Valid Palindrome Given a string, determine if it is a palindrome, considering only alphanumeric char ...

  2. php rmdir使用递归函数删除非空目录

    我们大家都知道,php rmdir()函数用于删除空目录,但如果要删除非空目录,我们必须将非空目录中的文件或子目录删除,本文章向大家介绍php如何使用递归函数删除非空目录,需要的朋友可以参考一下.首先 ...

  3. ThreadLocal的正确用法

    用法一:在关联数据类中创建private static ThreadLocalThreaLocal的JDK文档中说明:ThreadLocal instances are typically priva ...

  4. oracle10g配置小记

    因对接HIS系统,对方提供了视图.故此我拿起多年不用的ORACLE. 初始安装一切正常,然后打开Net Configuration Assistant配置监听程序. 接着配置 本地NET服务名配置 打 ...

  5. C#中截取字符串的几种方法

      1.根据单个分隔字符用split截取 例如 复制代码代码如下: string st="GT123_1"; string[] sArray=st.split("_&qu ...

  6. eclipse报错 :java was started but returned exit code=13

    一个礼拜没打开自己电脑上的eclipse,一打开居然报错,错误提示如下: cdm运行一下Java -version和javac 运行javac时报错,错误提示如下: 然后发现jdk的bin下没有dt. ...

  7. finder文件目录跳转快捷键

    finder文件目录跳转快捷键 command+shift+G

  8. javaweb学习第一天 debug

    debug 断点: f5:step into f6:step over f7:step return drop to frame:跳到当前方法的的第一行 resume:跳到下一个断点 watch:观察 ...

  9. mysql的从头到脚优化之数据库引擎的选择(转载)

    一. Mysql常用的存储引擎包括Innodb和Myisam以及memory引擎,但是最常用的莫过于Innodb引擎和MyISAM引擎,下边分别做下记录和比较: 下面思考下这几个问题: 你的数据库需要 ...

  10. redis info参数详解

    redis 127.0.0.1:6381> info redis_version:2.4.16                                  # Redis 的版本redis ...