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算法 ...
随机推荐
- [Linux] 关于Centos6中ulimit nproc用户进程数的限制
一.缘由: 在启动mongodb的时候,有Warning提示soft rlimits too low,就是用户使用进程数过小,遂调高系统资源关于用户最大进程数的限制ulimit -u. 先暂时使设置生 ...
- javascript 中正则表达式应用
<script type="text/javascript"> var str="<script type='text/javascript'> ...
- unity游戏在logcat中过滤一些不需要的Log
adb logcat | grep -v "UnityEngineDebug.cpp\|:\s*$" | grep Unity 意义: 1. grep -v "过滤条件1 ...
- 1、NASA Super Cloud Library(SCL)
Empowering Data Management, Diagnosis, and Visualization of Cloud-Resolving Models (CRM) by Cloud Li ...
- Hive On Spark hiveserver2方式使用
启动hiveserver2: hiveserver2 --hiveconf hive.execution.engine=spark spark.master=yarn 使用beeline连接hives ...
- 欧洲宇航局(ESA)的协同设计室(CDF)
官方网站:http://www.esa.int/SPECIALS/CDF/
- [转]javascript eval函数解析json数据时为什加上圆括号eval("("+data+")")
javascript eval函数解析json数据时为什么 加上圆括号?为什么要 eval这里要添加 “("("+data+")");//”呢? 原因在于: ...
- MongoDB常用操作
(备注: 对于 window, 不需要sudo) 验证成功与否: * 启动服务器: $sudo mongod --dbpath C:\data\db (需要 指明数据库存放的目录) * 打开shell ...
- LVS+keepalived负载均衡实战
1 首先安装虚拟机 安装系统 这里 配置两台虚拟机 1:192.168.137.102 2:192.168.137.103 分别安装tomcat 默认80端口,同时都是开启状态 配置192.168 ...
- WebViewJavascriptBridge详细使用(转载)
WebViewJavascriptBridge是支持到iOS6之前的版本的,用于支持native的iOS与javascript交互.如果需要支持到iOS6之前的app,使用它是很不错的.本篇讲讲Web ...