因为第一行和最后一行都是0,我们只需枚举最左边或最右边一列的01情况,即可得到整张表

然后再检验表是否符合要求

#include<cstdio>
#include<cstring>
#include<vector>
#include<cmath>
#include<queue>
#include<list>
#include<algorithm>
using namespace std; int T;
int n,m;
int a[][],ans[][],pri[][];
int b[];
int num;
int Y; bool f(int x,int y)
{
if(x>=&&x<n&&y>=&&y<m) return ;
return ;
} int getSum(int i,int j)
{
int res=;
if(f(i-,j-)) res=res+ans[i-][j-];
if(f(i-,j)) res=res+ans[i-][j];
if(f(i-,j+)) res=res+ans[i-][j+];
if(f(i,j-)) res=res+ans[i][j-];
if(f(i,j)) res=res+ans[i][j];
if(f(i,j+)) res=res+ans[i][j+];
if(f(i+,j-)) res=res+ans[i+][j-];
if(f(i+,j)) res=res+ans[i+][j];
if(f(i+,j+)) res=res+ans[i+][j+];
return res;
} void dfs(int tot)
{
if(tot==n-)
{
bool fail=; //填表
memset(ans,,sizeof ans);
for(int i=;i<m;i++) ans[][i]=,ans[n-][i]=;
for(int i=;i<=n-;i++) ans[i][]=b[i-];
for(int j=;j<=m-;j++)
for(int i=;i<=n-;i++)
ans[i][j]=a[i-][j-]-getSum(i-,j-); //填完检查
for(int i=;i<n;i++)
{
for(int j=;j<m;j++)
{
if(a[i][j]!=getSum(i,j)) fail=;
if(ans[i][j]!=&&ans[i][j]!=) fail=;
}
} if(fail==)
{
num++;
if(num==) Y=;
else if(num==)
{
for(int i=;i<n;i++)
for(int j=;j<m;j++)
pri[i][j]=ans[i][j];
}
}
return;
} b[tot]=;
dfs(tot+); if(Y) return;
b[tot]=;
dfs(tot+); if(Y) return;
} int main()
{
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&m);
for(int i=;i<n;i++)
for(int j=;j<m;j++)
scanf("%d",&a[i][j]);
if(m==)
{
printf("Impossible\n");
continue;
}
num=;Y=;
dfs();
if(Y==) printf("Multiple\n");
else if(num==)
{
for(int i=;i<n;i++)
{
for(int j=;j<m;j++)
{
printf("%d",pri[i][j]);
if(j<m-) printf(" ");
else printf("\n");
}
}
}
else printf("Impossible\n");
}
return ;
}

HDU 5613 Baby Ming and Binary image的更多相关文章

  1. hdu 5612 Baby Ming and Matrix games

    Baby Ming and Matrix games 题意: 给一个矩形,两个0~9的数字之间隔一个数学运算符(‘+’,’-‘,’*’,’/’),其中’/’表示分数除,再给一个目标的值,问是否存在从一 ...

  2. hdu 5612 Baby Ming and Matrix games(dfs暴力)

    Problem Description These few days, Baby Ming is addicted to playing a matrix game. Given a n∗m matr ...

  3. hdu 5611 Baby Ming and phone number(模拟)

    Problem Description Baby Ming collected lots of cell phone numbers, and he wants to sell them for mo ...

  4. hdu 5610 Baby Ming and Weight lifting

    Problem Description Baby Ming is fond of weight lifting. He has a barbell pole(the weight of which c ...

  5. HDU 5612 Baby Ming and Matrix games(DFS)

    题目链接 题解:题意为给出一个N*M的矩阵,然后(i∗2,j∗2) (i,j=0,1,2...)的点处是数字,两个数字之间是符号,其他位置是‘#’号. 但不知道是理解的问题还是题目描述的问题,数据中还 ...

  6. HDU 5611 Baby Ming and phone number

    #include<cstdio> #include<cstring> #include<vector> #include<cmath> #include ...

  7. HDU 5614 Baby Ming and Matrix tree 树链剖分

    题意: 给出一棵树,每个顶点上有个\(2 \times 2\)的矩阵,矩阵有两种操作: 顺时针旋转90°,花费是2 将一种矩阵替换为另一种矩阵,花费是10 树上有一种操作,将一条路经上的所有矩阵都变为 ...

  8. BestCoder Round #69 (div.2) Baby Ming and Weight lifting(hdu 5610)

    Baby Ming and Weight lifting Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K ( ...

  9. Baby Ming and Matrix games(dfs计算表达式)

    Baby Ming and Matrix games Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Ja ...

随机推荐

  1. bjective-C 中核心处理字符串的类是 NSString 与 NSMutableString

    Objective-C 中核心处理字符串的类是 NSString 与 NSMutableString ,这两个类最大的区别就是NSString 创建赋值以后该字符串的内容与长度不能在动态的更改,除非重 ...

  2. 转:SSH原理与运用(二):远程操作与端口转发

    作者:阮一峰 (Image credit: Tony Narlock) 七.远程操作 SSH不仅可以用于远程主机登录,还可以直接在远程主机上执行操作. 上一节的操作,就是一个例子: $ ssh use ...

  3. Lua 基础 -- 学习笔记

    标签(空格分隔): Lua 1. Lua可以一次性给多个变量赋值 变量比赋值多,多的变量就赋值nil 变量比赋值少,多的赋值舍弃 local a, b, c = 1, 2, 3 print( a, b ...

  4. VMI

    在虚拟机外部监控虚拟机内部运行状态的方法被称为虚拟机自省(Virtual Machine Introspection,VMI).VMI允许特权域查看非特权域的运行状态,并能获得被监控虚拟机运行状况相关 ...

  5. Webdriver+testNG+ReportNG+Maven+SVN+Jenkins自动化测试框架的pom.xml配置

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  6. map & flatMap 浅析

    我之前一直以为我是懂 map 和 flatMap 的.但是直到我看到别人说:「一个实现了 flatMap 方法的类型其实就是 monad.」我又发现这个熟悉的东西变得陌生起来,本节烧脑体操打算更细致一 ...

  7. android 代码动态创建视图

    LinearLayout 如何动态设置 margin? LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayou ...

  8. HDU1171--Big Event in HDU(多重背包)

    Big Event in HDU   Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...

  9. java 线程的同步

    Example12_7.java public class Example12_7 { public static void main(String args[]) { Bank bank = new ...

  10. Redis(1)在windows环境下的安装和测试

    初次准备使用redis,一个著名的nosql缓存数据库. 这里是第一天,就简单写一下windows下的安装,遇到的一些问题,然后简单的使用和测试,之后会在代码中使用和测试. 之后还会在生产环境中进行测 ...