D - Fliptile
#include <stdio.h>
#include <iostream>
#include <math.h>
#include <algorithm>
#include <queue>
#include <string.h>
using namespace std; const int INF = 0xfffffff;
int g[][];
int f[][] = {};
int ans[][] = {};
int mmin = INF; bool judge(int n,int m)//判断最后一行是否全为0
{
for(int i=;i<=m;i++)
{
int t = f[n][i]+f[n][i-]+f[n][i+]+f[n-][i];
if( (g[n][i]+t)& )
return false;
}
return true;
} void dfs(int n,int m,int k,int num)
{
if(num > mmin)//剪枝
return;
if(k > n)
{
if(judge(n, m) && mmin>num)//判断是否符合条件
{
memcpy(ans, f, sizeof(f));
mmin = num;
}
return;
}
int t = ;
for(int i=;i<=m;i++)
{
if((g[k-][i]+f[k-][i]+f[k-][i-]+f[k-][i+]+f[k-][i])&)//上一行是否为1,即是否需要翻转
{
f[k][i] = ;
t++;
}
else
f[k][i] = ;
}
dfs(n, m, k+, num+t);
} //n,m行列数 k当前列 num第一行翻转的次数
void todfs(int n, int m, int k, int num)
{
if(k > m)
{
dfs(n, m, , num); //对第一行每种情况进行搜索
return;
}
f[][k] = ; //不翻转
todfs(n, m, k+, num);
f[][k] = ; //翻转,num+1
todfs(n, m, k+, num+);
} int main()
{
int n,m;
cin >> n >> m;
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
cin>>g[i][j];
todfs(n, m, , ); //递归遍历第一行所有情况
if(mmin == INF)
cout<<"IMPOSSIBLE"<<endl;
else
for(int i=;i<=n;i++)
{
for(int j=;j<=m;j++)
cout<<ans[i][j]<<" ";
cout<<endl;
}
return ;
}
D - Fliptile的更多相关文章
- Enum:Fliptile(POJ 3279)
Fliptile 题目大意:农夫想要测牛的智商,于是他把牛带到一个黑白格子的地,专门来踩格子看他们能不能把格子踩称全白 这一题其实就是一个枚举题,只是我们只用枚举第一行就可以了,因为这一题有点像开关一 ...
- 与众不同 windows phone (36) - 8.0 新的瓷贴: FlipTile, CycleTile, IconicTile
[源码下载] 与众不同 windows phone (36) - 8.0 新的瓷贴: FlipTile, CycleTile, IconicTile 作者:webabcd 介绍与众不同 windows ...
- Fliptile 开关问题 poj 3279
Fliptile Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 4031 Accepted: 1539 Descript ...
- Fliptile
开关题 尺度法 Fliptile Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 3394 Accepted: ...
- POJ 3279(Fliptile)题解
以防万一,题目原文和链接均附在文末.那么先是题目分析: [一句话题意] 给定长宽的黑白棋棋盘摆满棋子,每次操作可以反转一个位置和其上下左右共五个位置的棋子的颜色,求要使用最少翻转次数将所有棋子反转为黑 ...
- 1647: [Usaco2007 Open]Fliptile 翻格子游戏
1647: [Usaco2007 Open]Fliptile 翻格子游戏 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 423 Solved: 173[ ...
- [Usaco2007 Open]Fliptile 翻格子游戏
[Usaco2007 Open]Fliptile 翻格子游戏 题目 Farmer John knows that an intellectually satisfied cow is a happy ...
- Fliptile 翻格子游戏[Usaco2007 Open]
题目描述 Farmer John knows that an intellectually satisfied cow is a happy cow who will give more milk. ...
- [Usaco2007 Open]Fliptile 翻格子游戏 状态压缩
考试想到了状压,苦于T1废掉太长时间,于是默默输出impossible.. 我们知道,一个格子的翻转受其翻转次数和它相邻翻转次数的影响. 由每一个位置操作两次相当于把它翻过来又翻回去,所以答案中每一个 ...
- Fliptile 翻格子游戏
问题 B: [Usaco2007 Open]Fliptile 翻格子游戏 时间限制: 5 Sec 内存限制: 128 MB 题目描述 Farmer John knows that an intell ...
随机推荐
- 修改MySQL的连接数
实际项目中出现“too many connnections...”错误提示,发现MySQL的最大连接数满了,于是我就查了一下使用的MySQL的最大连接数是多少? 安装好数据库也没有修改过,这应该是默认 ...
- c/c++通用内存泄漏检测框架GMFD(General Memory Fault Detection Framework)
http://qa.baidu.com/blog/?p=171 1 背景: x86平台有完善的用户态检测内存工具比如valgrind等,可以监控程序运行中详细的内存信息,从而精确定位内存问题.然而随着 ...
- CNN卷积神经网络_深度残差网络 ResNet——解决神经网络过深反而引起误差增加的根本问题,Highway NetWork 则允许保留一定比例的原始输入 x。(这种思想在inception模型也有,例如卷积是concat并行,而不是串行)这样前面一层的信息,有一定比例可以不经过矩阵乘法和非线性变换,直接传输到下一层,仿佛一条信息高速公路,因此得名Highway Network
from:https://blog.csdn.net/diamonjoy_zone/article/details/70904212 环境:Win8.1 TensorFlow1.0.1 软件:Anac ...
- 51Nod - 1055:最长等差数列 (求最长的等差数列)
N个不同的正整数,找出由这些数组成的最长的等差数列. 例如:1 3 5 6 8 9 10 12 13 14 等差子数列包括(仅包括两项的不列举) 1 3 5 1 5 9 13 3 6 9 12 ...
- eclipse代码编辑器中按alt+/提示No Default Proposals 的解决方法
window-> Preferences-> Java-> Editor-> Content Assist-> Advanced 上面的选项卡Select the pro ...
- 如何应用AutoIt,把局域网中所有的机器名展示在一个combox中?
有时候,我们会遇到以下情况: 你想与局域网中的某台机器建立连接,你就需要输入对方的机器名. 现在我比较懒,我不想输入对方的机器名,或者对方的机器名很难记住,那怎么办呢? 那就做一个combox在页面上 ...
- 文件的打开函数第一类--fopen()
fopen函数用来打开一个文件,其调用的一般形式为: 文件指针名=fopen(文件名,使用文件方式); 其中, “文件指针名”必须是被说明为FILE 类型的指针变量: “文件名”是被打开文件的 ...
- AQS共享锁应用之Semaphore原理
我们调用Semaphore方法时,其实是在间接调用其内部类或AQS方法执行的.Semaphore类结构与ReetrantLock类相似,内部类Sync继承自AQS,然后其子类FairSync和NoFa ...
- bzoj 3781 小B的询问——分块
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3781 非常经典的分块套路.于是时间空间比大家的莫队差了好多…… #include<io ...
- Day01:Python入门
一.编程与编程语言 编程的目的是将人类的思想流程按照某种能够被计算机识别的表达方式传递给计算机,从而让计算机能像人脑一样自动执行工作. 能被计算机所识别的表达方式是编程语言,python就是一门编程语 ...