POJ 1691 Painting A Board(迭代深搜)
调了一上午,单步的效率太低了,特别是在有递归的情况下。。。下午来了,输出调试了下,就发现bug了,各种混乱啊。
比较高兴的事,1Y了。本来还准备用edge1优化一下的,结果完全没用到。。
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
struct node
{
int x1,y1,x2,y2,c;
} p[];
struct n1
{
int u,v,next;
} edge1[],edge2[];
int first1[],first2[];
int to1,to2,n;
int o[];
void CL()
{
to1 = to2 = ;
memset(first1,-,sizeof(first1));
memset(first2,-,sizeof(first2));
}
int fun(int x,int y)
{
if(p[x].x2 <= p[y].x1)
{
if(p[x].y1 < p[y].y2&&p[x].y1 > p[y].y1)
return ;
else if(p[x].y2 < p[y].y2&&p[x].y2 > p[y].y1)
return ;
else if(p[y].y1 < p[x].y2&&p[y].y1 > p[x].y1)
return ;
else if(p[y].y2 < p[x].y2&&p[y].y2 > p[x].y1)
return ;
else if(p[x].y1 == p[y].y1&&p[x].y2 == p[y].y2)
return ;
else
return ;
}
return ;
}
void add1(int u,int v)
{
edge1[to1].u = u;
edge1[to1].v = v;
edge1[to1].next = first1[u];
first1[u] = to1 ++;
}
void add2(int u,int v)
{
edge2[to2].u = u;
edge2[to2].v = v;
edge2[to2].next = first2[u];
first2[u] = to2 ++;
}
int judge(int x)
{
int i;
for(i = first2[x];i != -;i = edge2[i].next)
{
if(!o[edge2[i].v])
break;
}
if(i == -)
return ;
else
return ;
}
int dfs(int x,int c,int step)
{
int i;
if(x < )
return ;
if(step > n)
return ;
for(i = ;i <= n;i ++)
{
int z = judge(i);
if(!o[i]&&z&&c == p[i].c)
{
o[i] = ;
if(dfs(x,p[i].c,step+))
{
return ;
}
o[i] = ;
}
else if(!o[i]&&z&&c != p[i].c)
{
o[i] = ;
if(dfs(x-,p[i].c,step+))
{
return ;
}
o[i] = ;
}
}
return ;
}
int main()
{
int t,i,j;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
CL();
for(i = ; i <= n; i ++)
{
scanf("%d%d%d%d%d",&p[i].x1,&p[i].y1,&p[i].x2,&p[i].y2,&p[i].c);
}
for(i = ; i <= n; i ++)
{
for(j = ; j <= n; j ++)
{
if(i != j)
{
if(fun(i,j))
{
add1(i,j);
add2(j,i);
//printf("%d %d\n",j,i);
}
}
}
}
for(i = ;i <= n-;i ++)
{
memset(o,,sizeof(o));
if(dfs(i,,))
break;
}
printf("%d\n",i);
}
return ;
}
POJ 1691 Painting A Board(迭代深搜)的更多相关文章
- POJ 1691 Painting a Board(状态压缩DP)
Description The CE digital company has built an Automatic Painting Machine (APM) to paint a flat boa ...
- POJ 1691 Painting A Board(DFS)
链接 题意 : 看了好长时间终于看懂题目了,将一个大矩形划分成若干小矩形,告诉你每个小矩形的左上角那个点和右下角那个点的坐标,告诉你这个小矩形要涂的颜色,每个颜色对应一个刷子,问你最少要使用几次刷子. ...
- 小结:A* & IDA* & 迭代深搜
概要: 在dfs中,如果答案的深度很小但是却很宽,而且bfs还不一定好做的情况下,我们就综合bfs的优点,结合dfs的思想,进行有限制的dfs.在这里A*.IDA*和迭代深搜都是对dfs的优化,因此放 ...
- bzoj 1085骑士精神 迭代深搜
题目传送门 题目大意:给出一幅棋盘,问能否复原,中文题面,不做解释. 思路:第一次写迭代深搜的题目,这道题还是挺经典的.这道题的状态很明显的每多搜一层就是多八倍,非常的多,而且又是t组输入,所以必定有 ...
- uva12558 Egyptian Fractions (HARD version)(迭代深搜)
Egyptian Fractions (HARD version) 题解:迭代深搜模板题,因为最小个数,以此为乐观估价函数来迭代深搜,就可以了. #include<cstdio> #inc ...
- [vijos1159&洛谷1494]岳麓山上打水<迭代深搜>
题目链接:https://vijos.org/p/1159 https://www.luogu.org/problem/show?pid=1494 这是今天的第三道迭代深搜的题,虽然都是迭代深搜的模板 ...
- [codevs1049]棋盘染色<迭代深搜>
题目链接:http://codevs.cn/problem/1049/ 昨天的测试题里没有打出那可爱的迭代深搜,所以今天就来练一练. 这道题其实我看着有点懵,拿着题我就这状态↓ 然后我偷偷瞄了一眼hz ...
- [noip模拟]小猫爬山<迭代深搜>
[题目描述]: Freda和rainbow饲养了N只小猫,这天,小猫们要去爬山.经历了千辛万苦,小猫们终于爬上了山顶,但是疲倦的它们再也不想徒步走下山了(呜咕>_<). Freda和rai ...
- 【wikioi】1049 棋盘染色(迭代深搜)
http://www.wikioi.com/problem/1049/ 这题我之前写没想到迭代加深,看了题解,然后学习了这种搜索(之前我写的某题也用过,,但是不懂专业名词 囧.) 迭代加深搜索就是限制 ...
随机推荐
- linux shell expr 使用
linux shell expr 使用 收藏人:春秋百味 -- | 阅: 转: | | 分享 非原创, 摘自:<LINUX与UNIX Shell编程指南> 17.5 expr用法 expr ...
- MVC 修饰标签
MVC中的修饰标签有很多用途.它以修饰标签形式应用在控制器或控制器中的动作上. 最先想到的就是AcceptVerbs标签,在创建的时候,如果导航到创建视图,但不创建,则: public ActionR ...
- Linux多线程编程——多线程与线程同步
多线程 使用多线程好处: 一.通过为每种事件类型的处理单独分配线程,可以简化处理异步事件的代码,线程处理事件可以采用同步编程模式,启闭异步编程模式简单 二.方便的通信和数据交换 由于进程之间具有独立的 ...
- 27.二元树的深度[BinaryTreeDepth]
[题目] 输入一棵二元树的根结点,求该树的深度.从根结点到叶结点依次经过的结点(含根.叶结点)形成树的一条路径,最长路径的长度为树的深度. 例如 10 ...
- iOS 中的frame,bounds,center,transform关联
这里有一篇好文章 http://www.winddisk.com/2012/06/07/transform/ 先看几个知识点,UIView 的frame,bounds,center,transform ...
- zpf 命名规则
2014年8月19日 18:48:39 所有控制器都要继承main类,main类是一个入口类,他里边根据请求初始化了一些变量,也初始化了一些系统变量等等,这些变量和函数可以被控制器类直接使用 控制器类 ...
- Java for LeetCode 147 Insertion Sort List
Sort a linked list using insertion sort. 解题思路: 插入排序,JAVA实现如下: public ListNode insertionSortList(List ...
- struts2 <s:property/>标签的使用--输出时间格式转换
转载地址http://hi.baidu.com/nonyi_com/blog/item/acf1b8d74b6cf63e07088bc4.html 最近在使用struts2的<s:propert ...
- 一、HTML和CSS基础--HTML+CSS基础课程--第1部分
第一章 HTML介绍 Html和CSS的关系 1. HTML是网页内容的载体.内容就是网页制作者放在页面上想要让用户浏览的信息,可以包含文字.图片.视频等. 2. CSS样式是表现.就像网页的外衣.比 ...
- Linux内核NAPI机制分析
转自:http://blog.chinaunix.net/uid-17150-id-2824051.html 简介:NAPI 是 Linux 上采用的一种提高网络处理效率的技术,它的核心概念就是不采用 ...