BFS
the_conquer_zzy
计算机科学与技术专业
展开
-
hdu 1180
主题思想 : BFS ,这里有个注意的情况是除了上下左右可以走,也可以不走即可以停留,所以需要把地图上可以停留的点,单独在push进队列。 再一个注意的点就是,当是楼梯时,是根据刚到达的时间,进行变向的,也就是说,到达楼梯需要爬的时间,正好是上一步结束的时间。AC代码:#include <iostream>#include<cstdio>#include<queue>#include<str原创 2017-08-19 20:47:06 · 232 阅读 · 0 评论 -
hdu 1226
主题思想 : 此題是BFS, 题目要求,是如果有多个解,输出最小的,所以,需要对m进行排序,去重,从小到大进行BFS,这样能保证最小,此外,还需要对0进行特殊处理。 最重要的一点是,为了避免MLE(memory limited exceed) ,需要利用秦九韶算法,进行余数判重。一个n表示成((((a0*c)+a1)*c+a2)*c) %n== (a0*c+a1)%n*c+a2)%nAC原创 2017-08-31 22:01:58 · 429 阅读 · 0 评论 -
hdu 1240 Asteroids!
主题思想: 最短xx ,首先应该想到BFS,因为一般的搜索题都是二维的。 这题是第一次三维的,主要是,三维方向变多了,从4个变成了6个,int dir[6][3]{ 1,0,0, -1,0,0, 0,1,0, 0,-1,0, 0,0,1, 0,0,-1};AC 代码:#include <iostream>#include<cstdio>#include<string原创 2017-09-03 22:37:28 · 189 阅读 · 0 评论 -
hdu 1253 胜利大逃亡
主题思想: 这是一道3维搜索题,因为求的是最小xx ,所以是bfs 搜索题。三维搜索模板:int dir[6][3]={1,0,0,-1,0,0,0,1,0,0,-1,0,0 ,0,1,0,0,-1};struct Node{ int x,y,z; int step=0; Node(){} Node(int xx,int yy,int zz){原创 2017-09-15 16:49:55 · 307 阅读 · 0 评论 -
hdu 1242
主题思想: 这题是求最小xx题,所以可以用BFS做,这题还可以归结为求图求最短路径问题,所以这题可以用SPFA求最短路径做,但是由于我自己设计的数据结构问题,我的类似于SPFA思想,却不同于SPFA模板,主要是我取消了visited 方法,所以导致,效率会变慢。首先,能用BFS ,肯定也能dfs,由于dfs情况太多,所以可以用记忆化搜索做,但是我用记忆化搜索过程出现了错误,主要是,和传统的记忆化搜原创 2017-09-07 11:12:01 · 205 阅读 · 0 评论 -
SPFA算法
queue<int> q;int start;q.push(start);while(!q.empty()){ int now=q.front(); q.pop(); // update all node 这里是重点,更新所有节点 for(int i=0;i<n;i++){ if(dist[now]+g[now][i]<dist[i]){原创 2017-09-07 11:03:17 · 165 阅读 · 0 评论 -
csdn 1104 Remainder
首先养成解题思路 : 题目要求最小路径,,那肯定是BFS,又有顺序要求,那么只要保证正确的步骤 即 + - * %最先得到的答案肯定是满足题目的。 所以这道题大基调就是BFS,至于路径长度和路径有一个结构体进行记录。本文 是mod 运算。。 mod 和% 的区别是%是有负有正, mod根据题目定义 a=b*q+r; a%q=r; 0<=r#include <iostream>#in原创 2017-07-28 14:59:37 · 212 阅读 · 0 评论 -
hdu 1195 open the lock
主题思想 : 首先读题,求最小值,一旦出现求什么最小路径,最小值之类的,考虑BFS。 再看题目,经过某种变化,可以理解为经过某种状态,经过某种变化到达另一种状态,最后到达最终状态,最小步骤数,因此是一道BFS题。 此外,由于要标记已经访问过的节点数,visited,而题目又是一个字符串形式的四位数,因此把字符串对应的数字作为状态的唯一标志,来标记是否访问过。AC代码:#include<iostr原创 2017-08-20 15:39:18 · 210 阅读 · 0 评论 -
hdu 1181
主题思想 BFS, 因为DFS时报stack溢出,所以改用BFS,就好了 注意清空初始条件。AC代码#include <iostream>#include<cstdio>#include<string>#include<cstring>#include<vector>#include<queue>using namespace std;const int maxn=27;vector原创 2017-08-19 22:06:54 · 248 阅读 · 0 评论 -
hdu 1245 saving james band
主题思想: 根据数据构造图,然后利用图算法,求最短路径,最短路采用SPFA算法。SPFA算法模板:queue<int> q;int start;q.push(start);while(!q.empty()){ int now=q.front(); q.pop(); // update all node 这里是重点,更新所有节点 for(int i=0;i<n原创 2017-09-11 19:49:26 · 168 阅读 · 0 评论