hdu1072】的更多相关文章

Nightmare Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submission(s) : 4   Accepted Submission(s) : 3 Font: Times New Roman | Verdana | Georgia Font Size: ← → Problem Description Ignatius had a nightmare last…
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1072 题目大意: 在n×m的地图上,0表示墙,1表示空地,2表示人,3表示目的地,4表示有定时炸弹重启器.定时炸弹的时间是6,人走一步所需要的时间是1.每次可以上.下.左.右移动一格.当人走到4时如果炸弹的时间不是0,可以重新设定炸弹的时间为6.如果人走到3而炸弹的时间不为0时,成功走出.求人从2走到3的最短时间. 思路: 从起点进行BFS,每个节点有四个属性,x,y,step(当前步数),tim…
非常标准的BFS 第一次写错了很多 1.到达4时设置为墙就好了  避免了死循环 2.不用开d数组   在结构体里面就行了 3.结构体初始化函数的写法: Node(int x=0,int y=0,int oil=0):x(x),y(y),oil(oil){} 4.bfs的FOR里面的判断条件可以写的很清晰!就判断可以的  不可以的直接不处理! #include<bits/stdc++.h> using namespace std; int sx,sy,ex,ey; ][],a[][],d2[][…
Nightmare Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 5647    Accepted Submission(s): 2808 Problem Description Ignatius had a nightmare last night. He found himself in a labyrinth with a ti…
Nightmare Problem Description Ignatius had a nightmare last night. He found himself in a labyrinth with a time bomb on him. The labyrinth has an exit, Ignatius should get out of the labyrinth before the bomb explodes. The initial exploding time of th…
#include <iostream> #include <cstdio> #include <cstring> #include <queue> using namespace std; class Data { public: int Etime; int x, y; int count; }; int n, m, sx, sy; int map[9][9]; int direction[4][2] = {1, 0, -1, 0, 0, 1, 0, -1…
#include<iostream> #include<queue> #include<cstring> using namespace std; int a[10][10]; int state_time[10][10]; int f[4][2]={0,1,0,-1,1,0,-1,0}; struct state { int x,y; int time; int count; }; int main() { int t,n,m; cin>>t; while…
传送门 题意 给出一张n*m的图 0.墙 1.可走之路 2.起始点 3.终点 4.时间重置点 问是否能到达终点 分析 我的训练专题第一题,一开始我设个vis数组记录,然后写炸,不能处理重置点根vis的关系,然后看了iaccepted这篇blog,换了一种思路,加了一个很好的剪枝,0ms过,足可显示我的搜索思想差.实现差,切记!切记! trick 1.dfs不能保证最先到达终点的为最短距离,不能打标记 2.剪枝说明:如果当前到达该点时间少于该点剩余时间并且步数大于该点步数,则返回 代码 #incl…
题目链接:Nightmare 题意: 给出一张n*m的图,0代表墙,1代表可以走,2代表起始点,3代表终点,4代表炸弹重置点 问是否能从起点到达终点 分析: 一道很好的DFS题目,炸弹重置点必然最多走一次,可能会陷入无限递归,故有一个重要的剪枝,见代码, 此题采用记忆化搜索(不懂の),注意代码的设计思路 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; ][],step…
题目链接:http://icpc.njust.edu.cn/Problem/Hdu/1072/ 题意:逃离迷宫,路中可能有炸弹,总时间是6个单位,在有炸弹的位置,如果到达的时刻时间大于0,则恢复到6时间,炸弹的位置可以重复到达,求出最终至少需要多少步才能走出迷宫,到达终点.这样的最优化问题和地图相关的,bfs应该足以解决.我们考虑到一个位置可能被多次访问,所以状态参数应该设置一个时间,设置为访问时的剩余时间,因为如果一个位置第一次访问时剩余时间是t,则下一次访问时如果剩余时间还是t的话,走的步数…