poj 1691 图方块 end
#include<iostream>
int m,n;
typedef struct node
{
int upx,upy;
int dox,doy;
int c;
}node;
node point[20];
int visit[20];
int map[20][20];
int indegree[20];
int min=1000;
void handle() //建立有向图
{ for(int i=0;i<20;i++)
{
visit[i]=0;
indegree[i]=0;
}
for(int i=0;i<20;i++)
{ for(int j=0;j<20;j++)
{
map[i][j]=0;
} }
for(int i=0;i<n;i++)
{ for(int j=0;j<n;j++)
{
if(point[i].dox==point[j].upx&&!(point[i].upy>point[j].doy||point[i].doy<point[j].upy))
{ map[i][j]=1; //存储是否连接
indegree[j]++; //存上面与他相邻矩形的数目
}
} }
}
void dfs(int j_num,int col,int o_num) // 染色的矩形数目 当前画笔的颜色 当前已经用画笔的数目
{
if(o_num>=min)
{
return;
} if(j_num==n)
{
min=o_num;
//printf("%d",o_num); }
for(int i=0;i<n;i++)
{ if(!(indegree[i])&&!visit[i])
{
visit[i]=1;
for(int j=0;j<n;j++)
{
if(map[i][j])
{
indegree[j]--;
}
}
if(point[i].c==col)
{
dfs(j_num+1,col,o_num);
}else{
dfs(j_num+1,point[i].c,o_num+1);
}
visit[i]=0;
for(int j=0;j<n;j++)
if(map[i][j])
indegree[j]++;
}
}
}
int main()
{
freopen("input.txt","r",stdin);
scanf("%d",&m);
while(m--)
{ min=1000;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d%d%d%d%d",&point[i].upx,&point[i].upy,&point[i].dox,&point[i].doy,&point[i].c);
}
handle();
dfs(0,0,0);
printf("%d\n",min);
}
return 0; }
poj 1691 图方块 end的更多相关文章
- POJ 1691 Painting a Board(状态压缩DP)
Description The CE digital company has built an Automatic Painting Machine (APM) to paint a flat boa ...
- R绘图(2): 离散/分类变量如何画热图/方块图
相信很多人都看到过上面这种方块图,有点像"华夫饼图"的升级版,也有点像"热图"的离散版.我在一些临床多组学的文章里面看到过好几次这种图,用它来展示病人的临床信息 ...
- poj 1419(图的着色问题,搜索)
题目链接:http://poj.org/problem?id=1419 思路:只怪数据太弱!直接爆搜,按顺序搜索即可. #include<iostream> #include<cst ...
- POJ 1691 Painting A Board(迭代深搜)
题目链接 调了一上午,单步的效率太低了,特别是在有递归的情况下...下午来了,输出调试了下,就发现bug了,各种混乱啊. 比较高兴的事,1Y了.本来还准备用edge1优化一下的,结果完全没用到.. # ...
- POJ 1691 Painting A Board(DFS)
链接 题意 : 看了好长时间终于看懂题目了,将一个大矩形划分成若干小矩形,告诉你每个小矩形的左上角那个点和右下角那个点的坐标,告诉你这个小矩形要涂的颜色,每个颜色对应一个刷子,问你最少要使用几次刷子. ...
- poj很好很有层次感(转)
OJ上的一些水题(可用来练手和增加自信) (POJ 3299,POJ 2159,POJ 2739,POJ 1083,POJ 2262,POJ 1503,POJ 3006,POJ 2255,POJ 30 ...
- POJ题目分类推荐 (很好很有层次感)
著名题单,最初来源不详.直接来源:http://blog.csdn.net/a1dark/article/details/11714009 OJ上的一些水题(可用来练手和增加自信) (POJ 3299 ...
- 常规DP专题练习
POJ2279 Mr. Young's Picture Permutations 题意 Language:Default Mr. Young's Picture Permutations Time L ...
- Book---强连通分量
这几天一直在做强连通,现在总结一小下 1.定义 在一个有向图中,如果任意的两个点都是相互可达的,就说这个图是强连通的,有向图的极大强连通子图,称为强连通分量 2.求法 学的是白书上的tarjan算法 ...
随机推荐
- css3 flex盒子布局
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- java 内存回收(GC)的方式
java内存的管理其实就是对象内存的管理,其中包括对象的分配和释放 对应程序员来说分配对象使用new关键字,而释放一个对象只需要让它等于null,让程序不能再访问这个对象,这时对象是不可达的,GC负责 ...
- ESXi Install OpenWRT
根据官方的提示,下载的img镜像需要转换为vmdk. 地址:http://wiki.openwrt.org/doc/howto/vmware 转换需要qemu-utils,网上的安装方法: #64位系 ...
- LeetCode 396. Rotate Function
Given an array of integers A and let n to be its length. Assume Bk to be an array obtained by rotati ...
- EA使用
类逻辑图 关系1:泛化(继承),Driver和Northeastermer继承了Person类 关系2:实现,Northeastermer实现了LivingLeiFeng类 关系3: 关联,两个对象 ...
- linux命令-ssh {远程登录}
一 命令解释 命令: ssh ssh [-l login_name] [-p port] [user@]hostname
- C语音常用库和函数
#include <assert.h> //设定插入点 #include <ctype.h> //字符处理 #include <errno.h> //定义错误码 # ...
- spring mvc使用@InitBinder 标签对表单数据绑定
在SpringMVC中,bean中定义了Date,double等类型,如果没有做任何处理的话,日期以及double都无法绑定. 解决的办法就是使用spring mvc提供的@InitBinder标签 ...
- R语言将字符串矩阵转化为数值型矩阵
这是原始数据的格式,当运行完下面的命令的时候,结果如下图 x=read.table("C:/Users/Administrator/Desktop/s1.txt") x=as.ma ...
- jquery.validate[.unobtrusive]和Bootstrap实现tooltip错误提示
类似的文章园子里已有,请看这里,个人感觉稍显复杂,日前也打算写一个简单的给项目用,一些关键点记录于此.最终效果如下: 后端使用Asp.net mvc5,前端框架有:jquery.validate.jq ...