搜索
文章平均质量分 78
yan_____
不跟你介绍
展开
-
uva 10603 倒水 bfs
倒水问题,求可以倒出最接近要求的水量和倒出的总水量,如果相差最小的时候有两个解,取较小的那一个#include#include#include#include#includeusing namespace std;int val[3],goal;int xiao,indx;int end,pour,mincha;int vis[200][200][200]; //相应状态下最原创 2012-10-21 00:35:29 · 507 阅读 · 0 评论 -
sdut 1961 dfs递归
Image Compression像素按精确度压缩,直接dfs即可解#include#includeint w,t;char map[70][70];int f(int x,int y,int size){ int i,j,sum; sum=0; for(i=x;i<x+size;i++) { for(j=y;j<y+size;原创 2013-03-11 19:44:17 · 732 阅读 · 0 评论 -
zoj 2849 优先队列bfs 熊猫烧香病毒传播
zoj 28491、被感染的机器防御等级2、类型小的优先感染3、只能感染相邻的4、一天之内能感染的全部都可以感染完#include#include#include#define INF 1<<30using namespace std;struct node{ int day; int type; int x; int y; f原创 2013-03-10 19:53:52 · 1393 阅读 · 0 评论 -
uva 705 Slash Maze 斜杠构图统计图中回路
还是斜杠构图,这里统计环的个数和最长环的长度,在bfs中记录长度,加上判断边界不成环的条件即可 Slash Maze By filling a rectangle with slashes (/) and backslashes ( ), you can generate nice little mazes. Here原创 2013-01-25 17:15:56 · 1069 阅读 · 0 评论 -
hdu 3375 XieGang and FanXieGang 斜杠构图 bfs
在图中寻找同色墙即内墙的个数,斜杠图的构图简单直接的一个方法是把杠放在3*3的矩阵中,再进行基本的搜索,但扩大9倍的规模会超时,一个杠还可以按照杠分开的区域分成4部分存储,即扩大4倍的规模,在遍历比较大的图时dfs往往会栈溢出,此时应用非递归的bfs对图遍历另外数据很多大初始化用memset很占时间会超时,不如for循环快相邻格子的块号是(r+2)%4,本格内相邻是3-r或(5-r)%原创 2013-01-25 10:57:30 · 1154 阅读 · 0 评论 -
hdu 2514 Another Eight Puzzle 枚举
将8个数字填进图中,让相邻的点上的数字不相邻,8个数字全排列枚举即可要注意全排列的求法#includedo{………… }while(next_permutation(a,a+8));Another Eight PuzzleTime Limit : 2000/1000ms (Java/Other) Memory Limit : 3276原创 2013-01-25 14:30:28 · 1005 阅读 · 0 评论 -
uva 861 Little Bishops 棋盘上的象
回溯会超时,要用把黑白棋盘分别dp,把对角线的格按大小排序后当做放车问题来计算,对角线摞起来不规则,就按照对角行格数从小到大画再dp,就不会有漏掉的情况//回溯#include#includeint zhu[16],fu[16],n,k,tot;int c[9][18];void search(int hang,int j,int lie){ if(hang==n||j>n原创 2012-11-06 22:39:17 · 1766 阅读 · 0 评论 -
uva 10181 - 15-Puzzle Problem 十五数码 IDA*
照上一个题八数码修改来的,只是十五数码和八数码判断是否有解的方法不同,八数码0的移动不影响其余7个数字逆序数的奇偶性,而十五数码0的左右移动不影响其余15个数逆序数的奇偶性(顺序不变),但上下移动改变奇偶(移动三次),加上0的话16个数逆序数左右改变(移动一次),上下也改变(移动7次),需要注意每次移动0的距离奇偶性也改变(0到目标位置的曼哈顿距离不是加1就是减一),所以16个数逆序数与0的距离之原创 2012-11-24 12:45:11 · 4363 阅读 · 2 评论 -
poj 1077 八数码 ida*
IDA*比较好,重复路径也无所谓了,A*存状态判重意义不大,不实用IDA*就是限制搜索深度的dfs,多加了一个limit限制条件,可以得到最优解八数码的一些解释http://wenku.baidu.com/view/37a1b7a4284ac850ad024269.html别人的总结http://www.cnblogs.com/JMDWQ/category/383627.html这原创 2012-11-23 23:21:11 · 1817 阅读 · 0 评论 -
uva 10004 双着色
#include#includeint flag;int map[210][210],n;int color[210];void dfs(int d,int c){ if(flag) return; if(color[d]==0) { color[d]=c; for(int i=0;i<n;i++) { if(map[d][i]==1) dfs(i,原创 2012-11-10 14:34:44 · 588 阅读 · 0 评论 -
uva 10160服务站
最小顶点覆盖问题,依次按修建服务站的个数从小到大dfs ,有几个优化:1、入度为0的点一定要用,used=1; 2、入度为1的点不用,used=-1,与它相连的那个点用,used=1;3、所有点按入度降序排列;4.、用late表示该点之后的点全用上的状态,与当前状态相加来判断当前路径是否能到达终点;5、用长整型来表示集合#include#include#includeint n,m;_原创 2012-11-10 14:33:26 · 1215 阅读 · 0 评论 -
uva 10099
#include#includeint x(int a,int b){ if(a<b) return a; else return b;}int d(int a,int b){ if(a<b) return b; else return a;}int main(){ int i,j,k,l,m,n,r,min; int s,e,p; int map[原创 2012-11-10 23:21:08 · 485 阅读 · 0 评论 -
hdu 1401 双向bfs
#include#include#include#includeusing namespace std;int move[2][4][2]={ {{0,-1},{0,1},{-1,0},{1,0}} //x y,{{0,-2},{0,2},{-2,0},{2,0}}};char vis[8][8][8][8][8][8][8][8];int flag;struct node{原创 2012-10-23 11:35:05 · 880 阅读 · 0 评论 -
uva 10118 免费糖果 深搜+记忆化搜索
uva 10118http://www.cnblogs.com/kedebug/archive/2013/04/07/3006493.html#include#include#define N 45#define C 22int max(int a,int b){ return a>b?a:b;}int pile[4][N],f[N][N][N][N],n原创 2013-04-24 09:55:54 · 1750 阅读 · 0 评论