给出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. 在linux下python爬虫进程发生异常时自动重启直至正常结束的方法

    之前在做爬虫的时候遇到一种情况,当网络情况不太好的时候,爬虫爬到的链接在urlopen时会因为无法正常连接而报URLError或者timeout的错误导致陈序报错而终止:但是这些错误在重新运行陈序后能 ...

  2. 21. Clone Graph

    Clone Graph Clone an undirected graph. Each node in the graph contains a label and a list of its nei ...

  3. linux下一对多socket服务器端多线程泄露问题

    线程创建多了,没有释放.导致内存泄露... int main() { int len; int on=1; // pMachList = CreateEmptyLinklist(); DataBase ...

  4. I2C控制器的Verilog建模之三(完结版)

    前言:终于到了测试篇,不过悲剧了一下.按照之前<二>里面的思路,在顶层用一个复用器驱动读写独立模块的I2C总线确实失败.虽然综合过去了,不过警告里已经说明:底层的2个原本是inout三态口 ...

  5. cocos2d中的可见性检测

    游戏的在进行一次渲染的时候,通常会提交大量的渲染对象给gpu.在这些需要渲染的对象中,并不是所有对象都会出现镜头中,即有一部分对象是不可见的. 通常有两种方式来完成不可见对象的剔除工作: (1)直接交 ...

  6. JavaScript笔记:数据类型

    javascript中有5种基本数据类型:Undefined,Null,Boolean,Number和String,还有一种复杂的数据类型--Object.javascript不支持任何创建自定义类型 ...

  7. MBW内存测试

    在测试前,理应了解本机所具备的特点,比如CPU频率.内存频率.内存大小,等等信息. 查看CPU用如下命令(多少个核,频率,特性等): cat /proc/cpuinfo 查看内存用如下命令:(只有当前 ...

  8. PHP超时处理全面总结

    [ 概述 ] 在PHP开发中工作里非常多使用到超时处理到超时的场合,我说几个场景: 1. 异步获取数据如果某个后端数据源获取不成功则跳过,不影响整个页面展现 2. 为了保证Web服务器不会因为当个页面 ...

  9. Analyze network packet files very carefully

    As a professional forensic guy, you can not be too careful to anlyze the evidence. Especially when t ...

  10. java学习第9天

    形式参数和返回值的问题 (1)形式参数: 类名:需要该类的对象 抽象类名:需要该类的子类对象 接口名:需要该接口的实现类对象 (2)返回值类型: 类名:返回的是该类的对象 抽象类名:返回的是该类的子类 ...