*Search Agorithm
WANSNIM
NULL.
展开
-
hdu 1728 逃离迷宫
原博文链接:http://972169909-qq-com.iteye.com/blog/1244218 from Author :KIDx 【DFS+BFS】对于代码31行,为什么等于不能随便剪掉 如果剪掉就会出现下图结果: 【假如转弯数k=1,起点终点如图】 那么如果你的代码是优先向右搜索就会出错 红色的线是先搜的,由于最多转一次弯,所以不合题意; 蓝色转载 2015-05-11 23:08:48 · 425 阅读 · 0 评论 -
搜索DFS+BFS和剪枝问题
HUD 1010题意:输入一个n*m的迷宫,和一个T:可以在迷宫中生存的最大时间。S为起点,D为终点。并且,每个格子只能踩一次,且只能维持一秒,然后该块地板就会塌陷。所以你必须每秒走一步,且到D点时,所用时间为T。用深搜。之前,误以为就是找到最短路,结果不是,而是恰好T秒走出迷宫。用DFS,超时可见剪枝的重要。 这题的剪枝主要是两个方面。 1:利用曼哈顿距离剪枝 —– 算出终点到该点的距离,与剩原创 2015-08-02 17:53:42 · 949 阅读 · 0 评论 -
POJ 2718 Smallest Difference(DFS+全排列函数)
http://poj.org/problem?id=2718题意: 给从0….9的几个数,让其组成两个整数,保证每个整数没有前导0。求这两个整数的最小差。思路:开始用爆搜将所有的情况都枚举出来求解,结果没有出乎意料的T了。然后想到 如果要使这两个数的差最小,那么应该让这两个数的数的位数接近相等,只需要DFS(n/2) 层。然后剩下的n/2个数可以用一个全排列函数来列出所有的情况再一一求解即可。原创 2015-09-18 13:17:02 · 567 阅读 · 0 评论 -
HDU 1426 Sudoku Killer
http://acm.hdu.edu.cn/showproblem.php?pid=1426题意:填数独的游戏,保证每行、每列,以及每个3x3的方格都包含1-9这九个数字。DFS:用VIS[3][N][N]来标记,分别标记行,列和3*3的方格。 输入输出格式有点怪,输入用scanf->wrong answer,用cin ->Accepted 输出的时候注意每两组数据间有个空格,但是最后一组数据后原创 2015-08-08 09:44:24 · 347 阅读 · 0 评论 -
POJ 1088 滑雪 (DFS+DP)
http://poj.org/problem?id=1088题意: 在一个N*M的map中找最长下降序列的长度。开始用BFS的记忆化搜索,发现总是不能更新找到优解的前面的值。这种情况下,DFS的回溯显得更优秀。 写这篇博客的目的就是为了告诉自己有时候DFS比BFS算法更省时#include <iostream>#include <cstdio>#include <cstring>#inclu原创 2015-08-23 10:23:31 · 457 阅读 · 0 评论 -
CodeForce 505C Mr. Kitayuta(DP+DFS)
http://codeforces.com/contest/505/problem/C题意是:有30001个岛屿,有的岛屿上存在宝石。给出岛屿上宝石的情况和第一次跳的步数。并且这个人每次跳的步数是 上次跳的步数/上次跳的步数 - 1/ 上次跳的步数 +1。如果跳到的岛屿上有宝石,那么将获得这个岛屿上宝石的数量。用DP+dfs来做。dp[i][j]表示跳到长度为i的岛屿,j表示当前跳跃的步数。 很原创 2015-09-16 15:42:13 · 539 阅读 · 0 评论 -
HDU 1885 Key Task + HDU 4771 Stealing Harry Potter's Precious(状压)
这两题都是多个物品取和不取的问题,一般用二进制存储。假设有K件物品,就开一个vis[N][N][1 << K]的数组来表示当前这个点已经得到了几件物品。其实可以开这个一个数组vis[N][N][2][2][2][2],也可以达到同样的效果,但是当k很大的时候会很麻烦。 当K为4时,编号为0,1,2,3。当前的状态用sta来表示: 当只取了0时:sta = 1<<0,此时的sta为1,二进制为 0原创 2015-08-06 20:52:23 · 288 阅读 · 0 评论 -
HDU 5423 Rikka with Tree(简单DFS+枚举)
http://acm.hdu.edu.cn/showproblem.php?pid=5423现在感觉到一个很大的障碍就是读题慢而且经常读错题。一道题目一般要读好几遍才明白意思。这一方面还需要多练。这题也是,读了好几遍题意才读懂。言归正传说题解。题意: 对于一棵树TT,令F(T,i)F(T,i)为点1到点ii的最短距离(边长是1). 两棵树AA和BB是相似的当且仅当他们顶点数相同且对于任意的ii都有原创 2015-09-02 21:37:40 · 482 阅读 · 0 评论 -
HDU 1180 (诡异的楼梯)+HDU 2102 (A计划)
之前自己也写过这两题,但是感觉真是神坑,不管怎么都过不了。今天巍神开了专题后又有这两题,于是我就开始认真写和debug。竟然AC了好开心。来总结下坑点。诡异的楼梯 题意: S是起点,T是终点,*是障碍物,| 和 — 是楼梯。楼梯很特别,每隔一秒换一个方向。人可以停留在任意一个点上,但是不能停留在楼梯上。 解题方法: 利用BFS优先队列。有一点需要注意的是当你走到楼梯口时,从楼梯这边到楼梯那边只需原创 2015-08-03 15:37:52 · 293 阅读 · 0 评论 -
HDU 3912 Turn Right + HDU 1254 推箱子 + HDU 1983 Kaitou Kid - The Phantom Thief (2)
http://acm.hdu.edu.cn/showproblem.php?pid=3912 这题应该算是个模拟题。题意大概是这样的: 一个n*m的网格,在第一行有个入口,第n行有个出口。然后人在里面行走必须满足如下条件:如果能向右走,就向右走,若不能向右走就向前走,如果不能向前走就向左走,如果不能向左走就像后走。题目中明确规定了可以保证从入口走到出口。问你的是:先从入口走到出口,再从出口走到入原创 2015-08-05 22:30:50 · 792 阅读 · 0 评论 -
POJ 3279 + UVA 11464 (二维翻转水题)
http://poj.org/problem?id=3279https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2459两题都是翻转一个数,然后它的上下左右都跟着变化。这种题目的做法是用DFS枚举出第一行的所有状态,当第一行的状态确定之后,那么下面的状态也唯一了原创 2015-12-04 21:49:52 · 363 阅读 · 0 评论