2018年长沙理工大学第十三届程序设计竞赛 G 题:逃离迷宫
题目链接:https://www.nowcoder.com/acm/contest/96/G
思路:两遍bfs,找到p到k的情况,记录时间;找到E到k的情况,记录时间。题目超时点在于输入需要用scanf。如果不用scanf可以用cin加速挂。
AC代码:
1 #include<iostream>
2 #include<bits/stdc++.h>
3 #include<queue>
4 #define INF 10000000
5 using namespace std;
6 int vis[505][505];
7 int ans[505][505];
8 char a[505][505];
9 int fx[4][2]={{-1,0},{0,-1},{1,0},{0,1}};
10 struct Node{
11 int x,y,step;
12 };
13 void bfs(int x,int y){
14 queue < Node > q;
15 Node now,nxt;
16 now.x=x;
17 now.y=y;
18 now.step=0;
19 q.push(now);
20 vis[x][y]=1;
21 while(!q.empty()){
22 now=q.front();
23 q.pop();
24 if(a[now.x][now.y]=='K'){
25 ans[now.x][now.y]=now.step;
26 }
27 for(int i=0;i<4;i++){
28 int tmpx=now.x+fx[i][0];
29 int tmpy=now.y+fx[i][1];
30 if(!vis[tmpx][tmpy]&&a[tmpx][tmpy]!='#'){
31 nxt.x=tmpx;
32 nxt.y=tmpy;
33 vis[nxt.x][nxt.y]=1;
34 nxt.step=now.step+1;
35 q.push(nxt);
36 }
37 }
38 }
39 return ;
40 }
41 int BFS(int x,int y){
42 queue < Node > q;
43 int mini=INF;
44 Node now,nxt;
45 now.x=x;
46 now.y=y;
47 now.step=0;
48 q.push(now);
49 vis[x][y]=1;
50 while(!q.empty()){
51 now=q.front();
52 q.pop();
53 if(a[now.x][now.y]=='K'&&ans[now.x][now.y]){
54 mini=min(mini,ans[now.x][now.y]+now.step);
55 }
56 for(int i=0;i<4;i++){
57 int tmpx=now.x+fx[i][0];
58 int tmpy=now.y+fx[i][1];
59 if(!vis[tmpx][tmpy]&&a[tmpx][tmpy]!='E'&&a[tmpx][tmpy]!='#'){
60 nxt.x=tmpx;
61 nxt.y=tmpy;
62 nxt.step=now.step+1;
63 q.push(nxt);
64 vis[nxt.x][nxt.y]=1;
65 }
66 }
67 }
68 return mini;
69 }
70 int main(){
71 // ios::sync_with_stdio(false); 加速挂
72 int T;
73 cin>>T;
74 while(T--){
75 int n,m;
76 cin>>n>>m;
77 memset(ans,0,sizeof(ans));
78 for(int i=0;i<504;i++)
79 for(int j=0;j<504;j++)
80 a[i][j]='#';
81 for(int i=1;i<=n;i++){
82 char c=getchar();
83 for(int j=1;j<=m;j++){
84 scanf("%c",&a[i][j]);
85 }
86 }
87 for(int i=1;i<=n;i++){
88 for(int j=1;j<=m;j++){
89 if(a[i][j]=='E'){
90 memset(vis,0,sizeof(vis));
91 bfs(i,j);
92 break;
93 }
94 }
95 }
96 int mini;
97 for(int i=1;i<=n;i++){
98 for(int j=1;j<=m;j++){
99 if(a[i][j]=='P'){
100 memset(vis,0,sizeof(vis));
101 mini=BFS(i,j);
102 break;
103 }
104 }
105 }
106 if(mini==INF){
107 cout<<"No solution"<<endl;
108 }else{
109 cout<<mini<<endl;
110 }
111 }
112 return 0;
113 }
2018年长沙理工大学第十三届程序设计竞赛 G 题:逃离迷宫的更多相关文章
- 2018年长沙理工大学第十三届程序设计竞赛 G 逃离迷宫 【BFS】
链接:https://www.nowcoder.com/acm/contest/96/G 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536 ...
- H-数学考试 想法题+最新头文件 2018年长沙理工大学第十三届程序设计竞赛
https://www.nowcoder.com/acm/contest/96/H 坑点:INF开太小了... #define _CRT_SECURE_NO_WARNINGS #include< ...
- 2018年长沙理工大学第十三届程序设计竞赛 E小木乃伊到我家(spfa模版)
链接:https://www.nowcoder.com/acm/contest/96/E来源:牛客网 小木乃伊到我家 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他 ...
- 2018年长沙理工大学第十三届程序设计竞赛 J杯子
链接:https://www.nowcoder.com/acm/contest/96/J来源:牛客网 杯子 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言655 ...
- 2018年长沙理工大学第十三届程序设计竞赛 H数学考试
链接:https://www.nowcoder.com/acm/contest/96/H来源:牛客网 数学考试 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言6 ...
- 2018年长沙理工大学第十三届程序设计竞赛 Dzzq的离散数学教室1
Dzzq的离散数学教室1 链接:https://www.nowcoder.com/acm/contest/96/D来源:牛客网 zzq的离散数学教室1 时间限制:C/C++ 1秒,其他语言2秒 空间限 ...
- 2018年长沙理工大学第十三届程序设计竞赛 C 取手机 【概率】
链接:https://www.nowcoder.com/acm/contest/96/C 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536 ...
- 2018年长沙理工大学第十三届程序设计竞赛 E 小木乃伊到我家 【最短路】
时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 64bit IO Format: %lld 题目描述 AA的欧尼酱qwb是个考古学家,有一天qwb发 ...
- 2018年长沙理工大学第十三届程序设计竞赛 I 连续区间的最大公约数
连续区间的最大公约数 思路:参照BZOJ 4488: [Jsoi2015]最大公约数脑补出的一个\(map\)套\(vector\)的写法,写起来比线段树短,运行时间比线段树快. 代码: #pragm ...
- 江西财经大学第一届程序设计竞赛 G题 小Q的口袋校园
链接:https://www.nowcoder.com/acm/contest/115/G来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536 ...
随机推荐
- 《SQL与数据库基础》04. SQL-DQL
目录 DQL 基础查询 条件查询 分组聚合 聚合函数 分组查询 结果排序 分页限制 总结 本文以 MySQL 为例 DQL 语法结构: SELECT 字段列表 FROM 表名列表 WHERE 条件列表 ...
- legend的用法
常规使用legend的方法 1. 自动检测 设置title的label标签,随后使用不带参数的legend函数也会自动显示(但不限于一种方式设置图形的label,只要设置了图形的label,使用leg ...
- 《Python魔法大冒险》010 魔法宝箱:列表与元组的探险
城堡的大门 随着小鱼和魔法师的深入,他们来到了一个古老的废弃城堡.城堡的大门上挂着一个巨大的锁,而锁的旁边有一排小抽屉,每个抽屉里都有一个物品. 魔法师对小鱼说:"这是一个古老的魔法宝箱,小 ...
- dedebiz数据重置
TRUNCATE biz_addonarticle;TRUNCATE biz_addonimages;TRUNCATE biz_addoninfos;TRUNCATE biz_addonshop;TR ...
- js递归查询之根据id查询当前对象
需求:递归查询数组中id对应的数据 Json数据格式: 1 let cityArr = [ 2 { 3 id: 1000, 4 name: '四川省', 5 children: [ 6 { 7 id: ...
- 解决软件安装无法自定义文件夹,自动安装在C盘 (Windows系统)
其实就是软链接的简单应用 1.软件已经自动安装 2.完全退出当前软件 3.通过软件图标的属性找到其实际的安装目录 4.进入该软件的安装目录 5.将该软件整个剪切(你没有看错)到指定文件夹(自定义的安装 ...
- 【短道速滑十】非局部均值滤波的指令集优化和加速(针对5*5的搜索特例,可达到单核1080P灰度图 28ms/帧的速度)。
非局部均值滤波(Non Local Means)作为三大最常提起来的去燥和滤波算法之一(双边滤波.非局部均值.BM3D),也是有着很多的论文作为研究和比较的对象,但是也是有着致命的缺点,速度慢,严重的 ...
- ESP32
Main menu Search Create account Log in Personal tools Apply for a scholarship & submit you ...
- SQL 语句 增删改查、边学习边增加中..... 这一部分为select
SQL语句按照最大的类别分为 1.增加 insert 2.删除 delete https://www.cnblogs.com/kuangmeng/p/17756654.html 3.修改update ...
- 这一大波Offer来的太突然了
今年 10 月份之前,作为双非院校的本科生来说是非常煎熬的,十几年的求学之路,加上猛学编程和猛肝算法,到头来却是"无一次面试机会",背后的辛酸不言而喻. 然而,国庆之后," ...