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 ...
随机推荐
- tornado之运行第一个tornado程序
Tornado是使用Python编写的一个强大的.可扩展的Web服务器.它在处理严峻的网络流量时表现得足够强健,但却在创建和编写时有着足够的轻量级,并能够被用在大量的应用和工具中. 首先是安装torn ...
- 6.JS输出
JavaScript 通常用于操作 HTML 元素. ① document.getElementById(id),可以访问某个 HTML 元素 请使用 "id" 属性来标识 HTM ...
- jQuery remove()与jQuery empty()的区别
jQuery remove() 方法删除被选元素及其子元素.举例如下: <!DOCTYPE html> <html> <head> <script src=& ...
- 理解vue ssr原理,自己搭建简单的ssr框架
前言 大多数Vue项目要支持SSR应该是为了SEO考虑,毕竟对于WEB应用来说,搜索引擎是一个很大的流量入口.Vue SSR现在已经比较成熟了,但是如果是把一个SPA应用改造成SSR应用,成本还是有些 ...
- Ubuntu下安装Android studio【转】
本文转载自:http://blog.csdn.net/walleit/article/details/65696712 版权声明:本文为博主原创文章,未经博主允许不得转载. 一,软件准备 1. Lin ...
- Codeforces Round #198 (Div. 2) E. Iahub and Permutations —— 容斥原理
题目链接:http://codeforces.com/contest/340/problem/E E. Iahub and Permutations time limit per test 1 sec ...
- AutoItLibrary安装和常见问题解决
http://blog.csdn.net/bible_reader/article/details/52044345
- HTML标题和段落
HTML标题 通过<h1> - <h6> 等标签进行定义 <h1>一标题</h1> <h2>二标题</h2> <h3> ...
- Mutual information and Normalized Mutual information 互信息和标准化互信息
实验室最近用到nmi( Normalized Mutual information )评价聚类效果,在网上找了一下这个算法的实现,发现满意的不多. 浙江大学蔡登教授有一个,http://www.zju ...
- fragment error
error: android.view.InflateException: Binary XML file line #6: Error inflating class fragment 解决办法 ...