HDU 2653 - Waiting ten thousand years for Love
首先,对于一个 '@' 飞上去,飞下来都要耗1点魔力,所以是两点= =
然后站在同一格 魔力可能不同,所以要增加一维。
还有当前搜到的不一定是最小。
别的也没啥。
#include <iostream>
#include <cstdio>
#include <cstring>
#include <queue>
using namespace std;
const int N=;
int d[][]={,,-,,,,,-};
struct node{
int x,y,t,mag;
}s,nxt;
char map[N][N];
int vis[N][N][N];
queue <node> q;
int n,m,t,mag,ans;
bool check(node& a)
{
return <=a.x&&a.x<n&&<=a.y&&a.y<m&&map[a.x][a.y]!='#' ;
}
void bfs()
{
while(!q.empty()) q.pop();
memset(vis,,sizeof(vis));
q.push(s);
while(!q.empty())
{
s=q.front();
q.pop();
if(map[s.x][s.y]=='L')
{
ans=min(s.t,ans);
continue;
}
for(int i=;i<;++i)
{
nxt.x=s.x+d[i][];
nxt.y=s.y+d[i][];
if(!check(nxt)) continue;
if(s.mag && !vis[nxt.x][nxt.y][s.mag-])
{
vis[nxt.x][nxt.y][s.mag-]=;
nxt.t=s.t+;
nxt.mag=s.mag-;
q.push(nxt);
}
if(map[s.x][s.y]!='@' && map[nxt.x][nxt.y]!='@' && !vis[nxt.x][nxt.y][s.mag])
{
vis[nxt.x][nxt.y][s.mag]=;
nxt.t=s.t+;
nxt.mag=s.mag;
q.push(nxt);
}
}
}
}
int main()
{
int k=;
while(~scanf("%d%d%d%d",&n,&m,&t,&mag))
{
for(int i=;i<n;i++)
{
scanf("%s",map[i]);
for(int j=;j<m;j++)
{
if(map[i][j]=='Y')
s.x=i,s.y=j;
}
}
s.t=,s.mag=mag;
ans=;
bfs();
printf("Case %d:\n",++k);
if(ans<=t) printf("Yes, Yifenfei will kill Lemon at %d sec.\n",ans);
else puts("Poor Yifenfei, he has to wait another ten thousand years.");
}
}
HDU 2653 - Waiting ten thousand years for Love的更多相关文章
- hdu Waiting ten thousand years for Love
被这道题坑到了,如果单纯的模拟题目所给的步骤,就会出现同一个位置要走两次的情况...所以对于bfs来说会很头痛. 第一个代码是wa掉的代码,经过调试才知道这个wa的有点惨,因为前面的操作有可能会阻止后 ...
- HDU 2653 (记忆化BFS搜索+优先队列)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2653 题目大意:迷宫中有普通点和陷阱.其中普通点可以走可以飞,但是陷阱只能飞.走耗时1,飞耗时2.但 ...
- hdu-2619 Love you Ten thousand years
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2619 题目大意: 求出小于n的数的个数,满足ki mod n,1≤i≤n是模n的完全剩余系 解题思路 ...
- HDU2653 BFS+优先队列
Waiting ten thousand years for Love Time Limit: 10000/2000 MS (Java/Others) Memory Limit: 32768/3 ...
- hdu2653之BFS
Waiting ten thousand years for Love Time Limit: 10000/2000 MS (Java/Others) Memory Limit: 32768/3 ...
- AssetBundle loading failed because.....已解决
http://blog.csdn.net/ldghd/article/details/9632455 ***************************** 一 ******* ...
- 【英语魔法俱乐部——读书笔记】 3 高级句型-简化从句&倒装句(Reduced Clauses、Inverted Sentences) 【完结】
[英语魔法俱乐部——读书笔记] 3 高级句型-简化从句&倒装句(Reduced Clauses.Inverted Sentences):(3.1)从属从句简化的通则.(3.2)形容词从句简化. ...
- sentence patterns
第四部分 推理题 1.世界上每个角落的每个人都有立场,都有背景,都有推理性,能推理出一个人语言的真意,才成就了真正的推理能力: 2.换言之,如果你能通过一个人的说话推理出其身份职业,你的推理能 ...
- C10K问题渣翻译
The C10K problem [Help save the best Linux news source on the web -- subscribe to Linux Weekly News! ...
随机推荐
- 初识Treap
Treap,简单的来说就是Tree+Heap,是一颗平衡树,每个节点有两个信息:1.key:当前节点的关键字 :2.fix:当前节点优先级.key满足二叉排序数的性质,即左儿子都比当前节点小,右儿子都 ...
- (转) Functions
Functions Functions allow to structure programs in segments of code to perform individual tasks. In ...
- TextView之二:常用属性
参考自<疯狂android讲义>2.3节 //TextView所呈现的文字 android:text="我爱Java" //文字颜色 android:textColor ...
- spring3+hibernate3+(dbcp+oracle+拦截器事务配置)整合(一)
1.applicationContext-base.xml文件 <?xml version="1.0" encoding="UTF-8"?>< ...
- vimdiff: 使用Vim中强大的文件diff功能[转]
学习了一段时间的Vim,直到最近才发现Vim的diff功能是如此方便,对比代码变化再也不用到处去找diff软件或者依靠版本控制的diff了.强大的Vim. 下图是我在macVim中的diff效果. 下 ...
- FatMouse's Speed(HDU LIS)
FatMouse's Speed Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- 搜索打表大找规律 (hdu2045)
不容易系列之(3)—— LELE的RPG难题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/O ...
- 宽带连接工具[bat]
功能概述: 本工具使用批处理编写,提供自动判断网络状态以决定断开或是连上网络,本月已用宽带时长,到月初自动清零.提供联网日志功能,可以记录下所有的连接或断开网络记录.如果连接失败,自动提示输入密码,特 ...
- 基于stm32f103zet6的FAT16文件系统学习0(读SD卡扇区)
SD卡已经看了两天了,主要是因为测试出来的卡容量不对,所以一直找原因,最终还是发现了,总比不过是单位上面出现了问题,或许是之前没有接触到SD的缘故吧,所以对其中的一些寄存器很不了解,一切都是重新开始, ...
- 如果设置Keil从C代码编译出来的hex文件地址从0x8000开始
和MON51的设置一样,这样作:1.把Startup.a51拷贝到工程目录加入工程,修改125行的 CSEG AT 0 为 CSEG AT 0X8000 ...