题目链接:点击打开链接

题目大意:一个矩形由n个小矩形组成,如今要给小矩形染色,可是颜料会向下滑,为了防止弄乱颜料,所以要先染上面的矩形,后然染以下的矩形。每一次改变颜色都要用一个新的刷子。问最小用多少刷子。

依照染色的条件。能够找到一个拓扑序列,拓扑序列中前面的要先染。后面的要后染,按拓扑的顺序dfs找出最少的刷字数。

#include <cstdio>
#include <cstring>
#include <vector>
#include <stack>
#include <algorithm>
using namespace std ;
struct node{
int y1 , x1 , y2 , x2 , c ;
}p[20];
vector <int> vec[20] ;
int sta[20] , k ;
int in[20] , min1 , n ;
int vis[20] ;
int cmp(node a,node b) {
return a.y1 < b.y1 ;
}
void dfs(int c,int num,int ans) {
if( ans > min1 ) {
return ;
}
if( num == n ) {
min1 = ans ;
return ;
}
int i , j , l ;
for(i = 0 ; i < n ; i++) {
if( vis[i] || in[i] ) continue ;
if( p[i].c == c ) {
vis[i] = 1 ;
l = vec[i].size() ;
for(j = 0 ; j < l ; j++)
in[ vec[i][j] ]-- ;
sta[k++] = i ;
dfs(c,num+1,ans) ;
k-- ;
vis[i] = 0 ;
for(j = 0 ; j < l ; j++)
in[ vec[i][j] ]++ ;
}
else {
vis[i] = 1 ;
l = vec[i].size() ;
for(j = 0 ; j < l ; j++)
in[ vec[i][j] ]-- ;
sta[k++] = i ;
dfs(p[i].c,num+1,ans+1) ;
k-- ;
vis[i] = 0 ;
for(j = 0 ; j < l ; j++)
in[ vec[i][j] ]++ ;
}
}
}
int main() {
int t , i , j ;
scanf("%d", &t) ;
while( t-- ) {
scanf("%d", &n) ;
memset(in,0,sizeof(in)) ;
memset(vis,0,sizeof(vis)) ;
for(i = 0 ; i < n ; i++) vec[i].clear() ;
for(i = 0 ; i < n ; i++) {
scanf("%d %d %d %d %d", &p[i].y1, &p[i].x1, &p[i].y2, &p[i].x2, &p[i].c) ;
}
sort(p,p+n,cmp) ;
for(i = 0 ; i < n ; i++) {
for(j = i+1 ; j < n ; j++) {
if( p[i].y2 == p[j].y1 && !( p[j].x2 <= p[i].x1 || p[j].x1 >= p[i].x2 ) ) {
vec[i].push_back(j) ;
in[j]++ ;
}
}
}
min1 = 100 ;
for(i = 0 ; i < n ; i++) {
if( p[i].y1 ) break ;
dfs(p[i].c,0,0) ;
}
printf("%d\n", min1+1) ;
}
return 0 ;
}

最新文章

  1. 连接WCF报EntityFramework.SqlServer 错误的解决方法
  2. 加载 pcntl 多进程
  3. sqldependency 支持的select
  4. ehcache 分布式集群同步数据实例
  5. C#语法糖之第六篇: 泛型委托- Predicate&lt;T&gt;、Func&lt;T&gt;
  6. js判断用户进入设备代码
  7. JAVA上传与下载
  8. Unity Instantiate各函数执行顺序
  9. unbuntu 系统登录华南师范大学校园网的方法
  10. python使用随机的163账号发送邮件
  11. Python之父重回决策层,社区未来如何发展?
  12. html前端优化建议
  13. BootStrap 学习笔记一
  14. idea激活方式
  15. [VUE ERROR] Invalid options in vue.config.js: &quot;publicPath&quot; is not allowed
  16. windows + php7.1 + redis3.1.4
  17. Spring,Hibernate 集成解决多hbm.xml文件繁多的方案
  18. Climbing Stairs爬楼梯——动态规划
  19. for程序员:这些你可能遇到的职场难题,我们帮你整理好了答案
  20. NIO 01 (转)

热门文章

  1. 【转】log4js在PM2的cluster模式下大坑
  2. ZOJ 2112 Dynamic Rankings(带修改的区间第K大,分块+二分搜索+二分答案)
  3. BZOJ 3150 [Ctsc2013]猴子 ——期望DP 高斯消元
  4. http2新特性
  5. 游戏(game)
  6. 【CCF】路径解析 模拟
  7. php处理ajax
  8. datatable导出到Word / Excel / PDF / HTML .NET
  9. form+iframe+file 页面无刷新上传文件并获取返回值
  10. tomcat 多实例的Sys V风格脚本