http://acm.hdu.edu.cn/showproblem.php?pid=5113

题意:给你n*m的格子,然后在每个格子内涂色,相邻格子不能同色,然后给你每个颜色涂的格子的固定个数,然后可不可以实现,可以实现输出任意一种,否则输出NO

思路:dfs枚举,剪纸,每种颜色剩余的个数不能超过剩余格子数的一半,如果剩余格子数是奇数,不能超过一半加1,偶数是一半。

 #include <cstdio>
#include <cstring>
#include <algorithm>
#define maxn 100
using namespace std; struct node
{
int c;
int id;
bool operator<(const node &a)const
{
return c>a.c;
}
}p[];
int t,n,m,k;
int c[maxn];
int g[][];
bool flag1; void dfs(int cc)
{
if(flag1) return;
if(cc>=n*m) return ;
for(int i=; i<=k; i++)
{
if((n*m-cc)%==)
{
if(p[i].c>(n*m-cc)/) return;
}
else
{
if(p[i].c>(n*m-cc)/+) return;
}
}
int x=cc/m;
int y=cc%m;
for(int i=; i<=k; i++)
{
if((g[x-][y]==p[i].id&&x->=)||(g[x][y-]==p[i].id&&y->=)) continue;
if(p[i].c==) continue;
g[x][y]=p[i].id;
p[i].c--;
dfs(cc+);
p[i].c++;
if(cc==n*m-)
{
flag1=true;
printf("YES\n");
for(int xx=; xx<n; xx++)
{
for(int yy=; yy<m; yy++)
{
if(yy==) printf("%d",g[xx][yy]);
else printf(" %d",g[xx][yy]);
}
printf("\n");
}
}
}
} int main()
{
scanf("%d",&t);
for(int cas=; cas<=t; cas++)
{
scanf("%d%d%d",&n,&m,&k);
for(int i=; i<=k; i++)
{
scanf("%d",&c[i]);
p[i].c=c[i];
p[i].id=i;
}
sort(p+,p+k+);
bool flag=true;
for(int i=; i<k; i++)
{
if((n*m)%==)
{
if(c[i]>(n*m/))
{
flag=false;
break;
}
}
else
{
if(c[i]>((n*m)/+))
{
flag=false;
break;
}
}
}
printf("Case #%d:\n",cas);
if(!flag)
{
printf("NO\n");
continue;
}
flag1=false;
dfs();
if(!flag1) printf("NO\n");
}
return ;
}

hdu 5113 Black And White的更多相关文章

  1. HDU 5113 Black And White 回溯+剪枝

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5113 Black And White Time Limit: 2000/2000 MS (Java/ ...

  2. [HDU 5113] Black And White (dfs+剪枝)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5113 题目大意:给你N*M的棋盘,K种颜色,每种颜色有c[i]个(sigma(c[i]) = N*M) ...

  3. 搜索(剪枝优化):HDU 5113 Black And White

    Description In mathematics, the four color theorem, or the four color map theorem, states that, give ...

  4. HDU 5113 Black And White ( 2014 北京区预赛 B 、搜索 + 剪枝 )

    题目链接 题意 : 给出 n * m 的网格.要你用 k 种不同的颜色填给出的网格.使得相邻的格子颜色不同.若有解要输出具体的方案 分析 : 看似构造.实则搜索.手构构半天没有什么好想法 直接搜就行了 ...

  5. hdu 3911 Black And White(线段树)

    题目连接:hdu 3911 Black And White 题目大意:给定一个序列,然后有M次操作: 0 l r:表示询问l,r中最大连续1的个数 1 l r:表示将l,r区间上的数取反 解题思路:线 ...

  6. HDU 5113

    HDU 5113类似四色定理的什么东西,大体就是dfs了,不过有两个坑点,这个题的逼格瞬间就上去了1.剪枝很神奇,任何一种颜色都不能超过剩下总格子数的一半,想想确实显然但是比赛的时候没有想到:2.测评 ...

  7. Hdu OJ 5113 Black And White (2014ACM/ICPC亚洲区北京站) (搜索)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5113 题目大意:有k种颜色的方块,每种颜色有ai个, 现在有n*m的矩阵, 问这k种颜色的方块能否使任 ...

  8. HDU 5113:Black And White(DFS)

    题目链接 题意 给出一个n*m的图,现在有k种颜色让你对这个图每个格子染色,每种颜色最多可以使用col[i]次,问是否存在一种染色方案使得相邻格子的颜色不同. 思路 以为是构造题,结果是爆搜.对于每一 ...

  9. HDU 3911 Black And White 分段树 题解

    Problem Description There are a bunch of stones on the beach; Stone color is white or black. Little ...

随机推荐

  1. [转] React同构思想

    React比较吸引我的地方在于其客户端-服务端同构特性,服务端-客户端可复用组件,本文来简单介绍下这一架构思想. 出于篇幅原因,本文不会介绍React基础,所以,如果你还不清楚React的state/ ...

  2. Change Fragment layout on orientation change

    Warning: this may be a pre-Lollipop answer. A Fragment doesn't get re-inflated on configuration chan ...

  3. Eclipse中文语言包下载

    Kepler .Juno . Indigo语言包: http://www.eclipse.org/babel/downloads.php 其他低版本Eclipse语言包下载: http://archi ...

  4. 数据结构 : Hash Table

    http://www.cnblogs.com/lucifer1982/archive/2008/06/18/1224319.html 作者:Angel Lucifer 引子 这篇仍然不讲并行/并发. ...

  5. (tomcat访问不了的两种解决方法)Bad Request(Invalid Hostname)

    显示这个页面的时候一般有几中解决方法: 第一种就是如下图所示的方法: 具体步骤是: 1.也就是左下角win的“运行”中输入cmd进入doc窗口中 2.输入代码:netstat -ano 3.找到占用8 ...

  6. 单例模式,多种实现方式JAVA

    转载请注明出处:http://cantellow.iteye.com/blog/838473 第一种(懒汉,线程不安全): public class Singleton { private stati ...

  7. HTML5 文件域+FileReader 分段读取文件并上传(七)-WebSocket

    一.单文件上传实例 HTML: <div class="container"> <div class="panel panel-default" ...

  8. jQuery实现页面滚动时顶部动态显示隐藏

    http://www.jqcool.net/jquery-scroll.html 另外headroom.js也行:http://www.bootcss.com/p/headroom.js/

  9. 1 加到 100 的 时间复杂度 C#.

    //1 加到 100 的 时间复杂度: ; ; ; i <= n; i++){ sum += i; } T() = ; //Initialize 'n'. T() = ; //Initializ ...

  10. hdoj 1251 字典树

    代码: #include <stdio.h>#define  MAX    26 typedef struct TrieNode{     int nCount;      struct ...