POJ3279 Fliptile 枚举+简单搜索
题意:一个矩阵,每个点1或0,然后每次翻一个点,它周围上下左右(包括自己)1-》0,0-》1,问最少翻几次可以矩阵全是0,忽略题目说的字典序
分析:枚举第一行所有的情况,然后下面几行也随之确定了,然后看哪种好就行,因为每行宽最多15 所有二进制枚举一下。
#include<cstdio>
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cmath>
#include<map>
#include<stdlib.h>
#include<string>
using namespace std;
typedef long long LL;
const int maxn=;
const int INF=0x3f3f3f3f;
int o[maxn][maxn];
int now[maxn][maxn];
int temp[maxn][maxn];
int res[maxn][maxn];
int n,m,ans;
int dx[]= {,,-,};
int dy[]= {-,,,};
void change(int x,int y)
{
now[x][y]=-now[x][y];
for(int i=; i<; ++i)
{
int p=x+dx[i];
int q=y+dy[i];
if(p<||p>n||q<||q>m)continue;
now[p][q]=-now[p][q];
}
}
bool check(int x,int y)
{
if(now[x-][y])return true;
return false;
}
void solve(int x)
{
for(int i=; i<=n; ++i)
for(int j=; j<=m; ++j)
now[i][j]=o[i][j];
int a[maxn],cnt=,c=,flag=;
memset(temp,,sizeof(temp));
memset(a,,sizeof(a));
while(x)
{
a[++cnt]=x%;
x>>=;
if(a[cnt])++c;
}
for(int i=; i<=m; ++i)
if(a[i])change(,i),temp[][i]++;
for(int i=; i<=n; ++i)
for(int j=; j<=m; ++j)
if(check(i,j))++c,change(i,j),temp[i][j]++;
for(int i=; i<=n; ++i)
for(int j=; j<=m; ++j)
if(now[i][j])flag=;
if(!flag&&c<ans)
{
ans=c;
for(int i=; i<=n; ++i)
for(int j=; j<=m; ++j)
res[i][j]=temp[i][j];
} }
int main()
{
while(~scanf("%d%d",&n,&m))
{
for(int i=; i<=n; ++i)
for(int j=; j<=m; ++j)
scanf("%d",&o[i][j]);
ans=INF;
int l=(<<m);
for(int i=; i<l; ++i)
solve(i);
if(ans==INF)
{
printf("IMPOSSIBLE\n");
continue;
}
else
{
for(int i=; i<=n; ++i)
{
for(int j=; j<m; ++j)
printf("%d ",res[i][j]);
printf("%d\n",res[i][m]);
}
}
}
return ;
}
POJ3279 Fliptile 枚举+简单搜索的更多相关文章
- poj 3279 Fliptile (简单搜索)
Fliptile Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 16558 Accepted: 6056 Descrip ...
- 简单搜索 kuangbin C D
C - Catch That Cow POJ - 3278 我心态崩了,现在来回顾很早之前写的简单搜索,好难啊,我怎么写不出来. 我开始把这个写成了dfs,还写搓了... 慢慢来吧. 这个题目很明显是 ...
- ElasticSearch 5学习(4)——简单搜索笔记
空搜索: GET /_search hits: total 总数 hits 前10条数据 hits 数组中的每个结果都包含_index._type和文档的_id字段,被加入到_source字段中这意味 ...
- nyoj 284 坦克大战 简单搜索
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=284 题意:在一个给定图中,铁墙,河流不可走,砖墙走的话,多花费时间1,问从起点到终点至少 ...
- 分布式搜索ElasticSearch构建集群与简单搜索实例应用
分布式搜索ElasticSearch构建集群与简单搜索实例应用 关于ElasticSearch不介绍了,直接说应用. 分布式ElasticSearch集群构建的方法. 1.通过在程序中创建一个嵌入es ...
- solr简单搜索案例
solr简单搜索案例 使用Solr实现电商网站中商品信息搜索功能,可以根据关键字搜索商品信息,根据商品分类.价格过滤搜索结果,也可以根据价格进行排序,实现分页. 架构分为: 1. solr服务器 2. ...
- 和我一起打造个简单搜索之SpringDataElasticSearch入门
网上大多通过 java 操作 es 使用的都是 TransportClient,而介绍使用 SpringDataElasticSearch 的文章相对比较少,笔者也是摸索了许久,接下来本文介绍 Spr ...
- 和我一起打造个简单搜索之SpringDataElasticSearch关键词高亮
前面几篇文章详细讲解了 ElasticSearch 的搭建以及使用 SpringDataElasticSearch 来完成搜索查询,但是搜索一般都会有搜索关键字高亮的功能,今天我们把它给加上. 系列文 ...
- 和我一起打造个简单搜索之Logstash实时同步建立索引
用过 Solr 的朋友都知道,Solr 可以直接在配置文件中配置数据库连接从而完成索引的同步创建,但是 ElasticSearch 本身并不具备这样的功能,那如何建立索引呢?方法其实很多,可以使用 J ...
随机推荐
- VB将PDF流写入ACCESS数据库,通过AcroPDF控件读出PDF流之实现
问题描述: 1.把pdf文件写入access2.读出时用AcroPDF控件 问题解答: 使用流对象保存和显示图片与文件打开vb6,新建工程. 添加两个按钮,一个image控件注意:Access中的ph ...
- 为你的PHP程序选择合适的密码库(初稿)
如果本文中的术语让你感到疑惑,请先参阅密码学术语及概念一文. 密码学不是魔术.加密一个应用程序并不能保证它在袭击下的安全(特别是在你没有设置验证密文的情况下).但如果出于商业需求你要确保程序的安全,传 ...
- HDU1412
大水题.. 求集合的并 /* */ #include<algorithm> #include<iostream> #include<string.h> #inclu ...
- 多线程 (五)NSOperation
NSOperation是对GCD的分装,OC语言,更简单方便 NSOperation和NSOperationQueue一起使用也能实现多线程编程 基本步骤: 将操作封装到一个NSOperation对象 ...
- BZOJ 4003 JLOI2015 城池攻占
做法和APIO2012派遣 那道题目类似 在树上DFS,维护当前子树的小根堆 因为需要合并孩子们的信息,使用左偏树就可以了 每次弹出死亡骑士,对剩余骑士打上奖励标记 至于标记的下传和更改,只需要每次在 ...
- [Unity菜鸟] 摄像机视角控制
1. 摄像机预览物体 上下左右远近 把CameraFollow脚本赋给Camera,把要观察的对象赋给target using UnityEngine; using System.Collection ...
- Struts-2.3.24.1官方例子-struts2-blank
一.配置文件 1.web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app id=&qu ...
- java:比较对象
对象内容相等条件:1.对象类型相同(可用instanceof操作符比较)2.对象的成员变量的值完全相同 instanceof 判断对象类型 //a是否为Child对象类型 boolean b = a ...
- 安装Ubuntu双系统系列——更换源
Ubuntu 有一个非常有用的命令 apt-get,它可以帮助你下载软件,还可以安装,下载并安装的命令是 apt-get install. 那Ubuntu默认是从哪里下载软件呢,这可以查看文件/etc ...
- android下升级软件介绍
编译android: 生成:system.img,ramdisk.img,userdata.img映像文件. ramdisk.img是emulator的文件系统 system.img包括了主要的包.库 ...