这个可以用异或高斯消元,但是我不会呀我用的暴搜

2的m次方枚举第一行的翻转情况,然后后面的就定了,因为对于一个j位置,如果i-1的j位置需要翻,那么一定要翻i的j,因为这是i-1的j最后翻的机会

按字典序搜索然后取次数min即可

#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int N=20,inf=1707185547;
int n,m,f[N][N],ans[N][N],p[N][N],a[N][N],mn=inf;
void dfs(int x)
{
if(x>m)
{
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
p[i][j]=a[i][j];
for(int i=1;i<=m;i++)
if(f[1][i])
{
p[1][i]^=1,p[2][i]^=1;
p[1][i+1]^=1,p[1][i-1]^=1;
}
for(int i=2;i<=n;i++)
for(int j=1;j<=m;j++)
{
if(p[i-1][j]==1)
{
f[i][j]=1;
p[i][j]^=1;
p[i][j+1]^=1,p[i][j-1]^=1;
p[i+1][j]^=1,p[i-1][j]^=1;
}
else
f[i][j]=0;
if(p[i-1][j])
return;
}
bool flag=false;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
if(p[i][j])
{
flag=true;
break;
}
if(!flag)
{
int tot=0;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
if(f[i][j])
tot++;
if(tot>=mn)
return;
mn=tot;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
ans[i][j]=f[i][j];
}
return;
}
for(int i=0;i<=1;i++)
{
f[1][x]=i;
dfs(x+1);
}
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
scanf("%d",&a[i][j]);
dfs(1);
if(mn==inf)
printf("IMPOSSIBLE");
else
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<m;j++)
printf("%d ",ans[i][j]);
printf("%d\n",ans[i][m]);
}
}
return 0;
}

bzoj 1647: [Usaco2007 Open]Fliptile 翻格子游戏【dfs】的更多相关文章

  1. BZOJ 1647 [Usaco2007 Open]Fliptile 翻格子游戏:部分枚举 位运算

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1647 题意: 在一个n*m(1 <= n,m <= 15)的棋盘上,每一个格子 ...

  2. 1647: [Usaco2007 Open]Fliptile 翻格子游戏

    1647: [Usaco2007 Open]Fliptile 翻格子游戏 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 423  Solved: 173[ ...

  3. 【BZOJ】1647: [Usaco2007 Open]Fliptile 翻格子游戏(暴力)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1647 自己太弱...看题解.. 竟然是枚举第一行的放法,,,因为一定要全部变0,所以将前一行1的在这 ...

  4. [Usaco2007 Open]Fliptile 翻格子游戏

    [Usaco2007 Open]Fliptile 翻格子游戏 题目 Farmer John knows that an intellectually satisfied cow is a happy ...

  5. [Usaco2007 Open]Fliptile 翻格子游戏题解

    问题 B: [Usaco2007 Open]Fliptile 翻格子游戏 时间限制: 5 Sec  内存限制: 128 MB 题目描述 Farmer John knows that an intell ...

  6. 【BZOJ 1647】[Usaco2007 Open]Fliptile 翻格子游戏 模拟、搜索

    第一步我们发现对于每一个格子,我们只有翻和不翻两种状态,我们发现一旦确定了第一行操作,那么第二行的操作也就随之确定了,因为第一行操作之后我们要想得到答案就得把第一行全部为0,那么第二行的每一个格子的操 ...

  7. [Usaco2007 Open]Fliptile 翻格子游戏 状态压缩

    考试想到了状压,苦于T1废掉太长时间,于是默默输出impossible.. 我们知道,一个格子的翻转受其翻转次数和它相邻翻转次数的影响. 由每一个位置操作两次相当于把它翻过来又翻回去,所以答案中每一个 ...

  8. [Usaco2007 Open]Fliptile 翻格子游戏 状压dp

    n,m<=15,直接搞肯定不行,考虑一行一行来, 每一行的状态只与三行有关,所以从第一行开始枚举,每一次让下面一行填上他上面那行的坑 最后一行必须要同时满足他自己和他上面那行,否则舍去 #inc ...

  9. [BZOJ 1647][USACO 2007 Open] Fliptile 翻格子游戏

    1647: [Usaco2007 Open]Fliptile 翻格子游戏 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 702  Solved: 281[ ...

随机推荐

  1. c# TcpClient简易聊天工具

    说明: TcpClient 链接是一个比较安全稳定的链接,作为聊天或者是数据稳定传输,是比较合适的,下面的代码测试过,如果你吧他放在公网服务器上,也是可以用的 using System; using ...

  2. SQL Server 2016 CTP3.2 开荒 Reporting Service 篇

    仅仅是开荒资源页,反正过不了多久就会有新的CTP. 下面是MSDN I Tell you 提供的 不过是中文,个人不是很建议,因为现在大多的资源页都是英文的ed2k://|file|cn_sql_se ...

  3. 【07】Ajax status和statusText状态对照表

    Ajax status和statusText状态对照表   XMLHttpRequest 对象的 status 和 statusText 属性保存有服务器返回的 http 状态码,不同的是,statu ...

  4. Android Studio 使用图片

    首先将图片放在drawable下 然后: <ImageView android:layout_width="wrap_content" android:layout_heig ...

  5. django2

    八 Models 数据库的配置 1    django默认支持sqlite,mysql, oracle,postgresql数据库.  <1> sqlite django默认使用sqlit ...

  6. 家的范围 Home on the Range(洛谷 2733)

    题目背景 农民约翰在一片边长是N (2 <= N <= 250)英里的正方形牧场上放牧他的奶牛.(因为一些原因,他的奶牛只在正方形的牧场上吃草.)遗憾的是,他的奶牛已经毁坏一些土地.( 一 ...

  7. linux 磁盘阵列

    1.独立磁盘冗余阵列 (RAID) 2.RAID级别: raid0 扩展卷 (条带卷) 至少一块硬盘 具有较高的存储性能 数据请求多块硬盘并行应答 连续数据分散到多个磁盘存储 ,一块磁盘坏掉所有文件就 ...

  8. 用ReentrantLock和Condition实现生产者和消费者模式

    前面一篇文章<wait.notify应用场景(生产者-消费者模式)>是一种生产者消费者模式实现,今晚这是Lock方式实现,下面是源码: 生产者代码: /** * 生产者 * * @auth ...

  9. Sum-(最大子序列和)

    http://bestcoder.hdu.edu.cn/contests/contest_showproblem.php?cid=652&pid=1003 题目大意: 给你一个序列,你随便找一 ...

  10. Subsets and Subsets II (回溯,DFS,组合问题)

    Given a set of distinct integers, S, return all possible subsets. Note: Elements in a subset must be ...