随笔分类 -  搜索

PAT 1013Battle Over Cities
摘要:本题注意解题要点就是需要添加的边数就是删除对应点之后的连通块数减一。然后用dfs求出连通块数目然后将其减一即可。 参考代码如下: 阅读全文
posted @ 2019-09-04 12:20 sapphirebitter 阅读(118) 评论(0) 推荐(0)
PAT1001A+B Format
摘要:链接:https://www.patest.cn/contests/pat-a-practise/1001 时间限制 400 ms 时间限制 400 ms 内存限制 65536 kB 内存限制 65536 kB 代码长度限制 16000 B 代码长度限制 16000 B 判题程序 Standard 阅读全文
posted @ 2018-03-30 22:01 sapphirebitter 阅读(203) 评论(0) 推荐(0)
剑指offer前6题
摘要:二维数组中的查找 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 时间限制:1秒 空间限制:32768K 热度指数:617731 本题知识点: 查找 思路:直接暴力查找即可,也可以 阅读全文
posted @ 2018-03-30 21:55 sapphirebitter 阅读(196) 评论(0) 推荐(0)
公共表达式消除(UVa 12219)
摘要:紫书354页的题,将表达式树进行公共表达式消除,化为等价的图。因为需要判断某一个是否出现过,所以需要快速比较,采用哈希表的形式,将a~b与1~27一一对应,不采用0,因为0与0000是相同的,对于每一个树,都预先给予其一个编号,然后将其所表示的字符串化为27进制的数,然后递归建造其左右子树,如果发现 阅读全文
posted @ 2017-11-22 19:56 sapphirebitter 阅读(1617) 评论(0) 推荐(0)
二分搜索以及查找区间的上下界
摘要:二分查找: 二分查找求下界: 二分查找求上界: 阅读全文
posted @ 2017-09-20 22:03 sapphirebitter 阅读(362) 评论(0) 推荐(0)
Guarding the Chessboard(UVa 11214)
摘要:本题题意: 输入一个n*m的棋盘,某些格子有标记,用最少的皇后占据或者攻击所以带标记的格子。皇后的攻击范围为同行同列和同对角线。 可以使用IDA*算法,即从样例可以发现只需要最多5个棋子就可以对棋盘上所有地方进行攻击,因而使用IDA*进行对应的剪枝即可。 阅读全文
posted @ 2017-09-13 22:22 sapphirebitter 阅读(357) 评论(0) 推荐(0)
迭代加深搜索(以Power Calculus POJ--3134 UVa--1374为例)
摘要:本题代码如下: 阅读全文
posted @ 2017-09-05 22:19 sapphirebitter 阅读(520) 评论(0) 推荐(0)
IDA*(以The Ratotion Game POJ--2286 UVa1343为例)
摘要:IDA*算法实质就是迭代加深搜索和A*算法的结合,通过迭代加深搜索来寻找答案,借由预估函数h()来进行估计与剪枝。 本题主框架如下: 由1开始不断加深最大深度,如果当前深度+需要到达目标的步数>最大深度时,则剪枝,需要达到目标的步数可以用函数h()表示,其返回值和计算方法由具体问题确定,本题中则是中 阅读全文
posted @ 2017-09-05 21:22 sapphirebitter 阅读(288) 评论(0) 推荐(0)
<<操作,&0xff以及|的巧妙运用(以POJ3523---The Morning after Halloween(UVa 1601)为例)
摘要:<<表示左移,如a<<1表示将a的二进制左移一位,加一个0,&0xff表示取最后8个字节,如a&0xff表示取a表示的二进制中最后8个数字组成一个新的二进制数,| 运算符表示对2个数的二进制位进行比较,只要2个之中有一个这个位是1,则2者进行或运算之后得到的那个二进制数相应的位也是1。 因此,可以将 阅读全文
posted @ 2017-08-30 17:15 sapphirebitter 阅读(222) 评论(0) 推荐(0)
BFS模板
摘要:bool visit[maxn];///访问标记 const int dr[]= {-1,0,1,0,-1,1,-1,1}; ///向左上右下,左下,右上,右下,左上 const int dc[]= {0,1,0,-1,-1,1,1,-1}; struct node { int r; int c; int step; }; node input[maxn]; void b... 阅读全文
posted @ 2017-08-14 16:39 sapphirebitter 阅读(159) 评论(0) 推荐(0)
Uva 816 Abbott's Revenge(BFS)
摘要:#include #include #include #include using namespace std; struct Node { int row,col,dir; Node(int row=0,int col=0,int dir=0):row(row),col(col),dir(dir) {} }; const char * dirs="NESW"; const ... 阅读全文
posted @ 2017-08-11 17:06 sapphirebitter 阅读(269) 评论(0) 推荐(0)