问题 H: Problem H. 小凡与英雄救美

时间限制: 1 Sec 内存限制: 256 MB

题目描述
英雄救美的故事永不过时。在本题中,小凡将扮演英雄勇闯魔王的宫殿,来到公主身边。
小凡手上有着宫殿的完整地图,该地图可以看作一个 n × n 的网格图,每个网格即为一个房间,地 图上有 5 类房间:
”S”:代表初始时小凡所在的房间。
”E”:代表公主所在的房间,由于公主被魔王所囚禁,所以无法移动。
”X”:该房间内驻守着第一类怪物,宫殿侍从,该怪物同样不会移动。
”P”:该房间内驻守着第二类怪物,魔王士兵,该怪物同样不会移动。
”O”:该房间空空如也。
两个房间相邻,当且仅当所代表的网格之间存在公共边。(即每个房间最多与上下左右四个房间所相 邻,如果当前房间坐标为 (x y),则与其相邻房间的坐标分别是 (x y + 1) (x y − 1) (x + 1 y) (x − 1 y)
在每一步中,小凡可以移动到相邻的网格中。
由于小凡的精力有限,他不想和怪物做过多的缠斗。
对于小凡来说,如果存在一种从初始房间到公主所在房间的移动方式,过程中不会经过任何怪物驻 守的房间,输出”MAJOR VICTORY”;
否则,如果存在一种从初始房间到公主所在房间的移动方式,只会与其中的一类怪物相遇,输 出”NARROW VICTORY”;
否则,此时任何一种从初始房间到公主所在房间的移动方式,均会经过两类怪物所在的房间,此时输 出”LOSE ”。
输入
第一行包含一个整数 n(1 ≤ n ≤ 10),代表宫殿的大小。 第二行到第 n + 1 行每行包括一个长度为 n 的字符串,每个字符代表宫殿中每个房间的类型,字符 只存在”S”,”E”,”X”,”P”,”O” 五种,小凡的初始房间”S” 和公主所在的房间”E” 有且仅有一个。
输出
如果存在一种从初始房间到公主所在房间的移动方式,过程中不会经过任何怪物驻守的房间,输 出”MAJOR VICTORY ”;
否则,如果存在一种从初始房间到公主所在房间的移动方式,只会与其中的一类怪物相遇,输 出”NARROW VICTORY”;
否则,此时任何一种从初始房间到公主所在房间的移动方式,均会经过两类怪物所在的房间,此时输 出”LOSE ”。
样例输入
3
SOX
PPX
XXE
样例输出
NARROW VICTORY
提示
在该样例中,英雄只与一类怪物相遇的行走方式为:S(1 1) −> O(1 2) −> X(1 3) −> X(2 3) −>
E(3 3)

啊这,比赛的时候一看就直接dfs恩搜,真是一头闷到dfs里出不来了
校赛的题感觉这一道比较巧妙,其他的就不写了。
思路:把怪物所在的房间可以看做障碍:
当 ‘P’、‘X’都看做障碍的时候如果还能搜到终点说明有一条路可以完全不经过怪物的房间。如果上一个情况不存在,那么当把‘P’、‘X’中的其中一个怪物的房间看做障碍(P是障碍X不是、X是障碍P不是),如果两种情况下存在一个可以搜到终点那么就是题中的第二种情况,不然就是第三种情况。
想到将怪物看做障碍的话就很简单,不然就wa

#include<iostream>
#include<cstring>
#include<queue>
using namespace std;
struct point {int x, y;
};
char maps[15][15];
bool vis[15][15];
int dir[4][2] = { -1,0,1,0,0,-1,0,1 };
int n;
int sx, sy, ex, ey;
bool bfs(char block1,char block2) {//block:障碍种类memset(vis, 0, sizeof(vis));queue<point> q;point p;p.x = sx, p.y = sy;q.push(p);while (!q.empty()) {p = q.front();q.pop();for (int i = 0; i < 4; i++) {point t;t.x = p.x + dir[i][0];t.y = p.y + dir[i][1];if (t.x >= 1 && t.x <= n&&t.y >= 1 && t.y <= n && !vis[t.x][t.y] && maps[t.x][t.y] != block1&&maps[t.x][t.y] != block2) {if (t.x == ex&&t.y == ey) {return true;}vis[t.x][t.y] = 1;q.push(t);}}}return false;
}
int main() {cin >> n;for (int i = 1; i <= n; i++) {for (int j = 1; j <= n; j++) {cin >> maps[i][j];if (maps[i][j] == 'S') sx = i, sy = j;else if (maps[i][j] == 'E') ex = i, ey = j;}}bool f1 = false, f2 = false;if (bfs('P', 'X') == true) {//两种怪物都视作障碍还能找到终点,说明满足第一种情况cout << "MAJOR VICTORY\n";}else{f1 = bfs('X', '0');//把两个怪物中的一个看做障碍f2 = bfs('P', '0');if ((f1 == false && f2 == true) || (f1 == true && f2 == false)) {//如果能找到终点则满足第二种情况cout << "NARROW VICTORY\n";}else cout << "LOSE\n";//否则}return 0;
}

校赛就这? 我就这。

Problem H. 小凡与英雄救美相关推荐

  1. NEERC13 Problem H.Hack Protection

    NEERC13 Problem H.Hack Protection Solution 注意到题目中的区间与,在左端点lll确定的情况下,对于所有r≥lr\geq lr≥l,ANDl,rAND_{l,r ...

  2. Problem H: 今年第几天?

    Problem H: 今年第几天? Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 723  Solved: 310 Description 定义一个函 ...

  3. C-11 Problem H: 开宝箱2

    Problem H: 开宝箱2 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 1443 Solved: 860 Description 急先锋是一个商人 ...

  4. 2017广东工业大学程序设计竞赛决赛 Problem H: tmk买礼物(数论)

    tmk买礼物 Problem H: tmk买礼物 Description 今天是校赛的日子,为了庆祝这么喜庆的日子,TMK打算买些礼物给女票LSH庆祝一下. TMK进入了雪梨超市,然后刚踏入的一瞬间, ...

  5. 广东工业大学第12届ACM程序设计大赛 Problem H: tmk买礼物

    Problem H: tmk买礼物 Description 今天是校赛的日子,为了庆祝这么喜庆的日子,TMK打算买些礼物给女票LSH庆祝一下. TMK进入了雪梨超市,然后刚踏入的一瞬间,店主就对TMK ...

  6. CSUST选拔赛题解之-Problem H: 逃出监狱

    Problem H: 逃出监狱 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 116  Solved: 42 [Submit][Status][Web ...

  7. 实验8:Problem H: 正方形、长方形、立方体

    总的来说这几道题,只有质心算法最坑,至今还没得到OJ上显示的输出结果,其他题做法基本类似.只有一些小的知识点不同. Home Web Board ProblemSet Standing Status ...

  8. Problem H. 公孙玉龙

    Problem H. 公孙玉龙 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) ...

  9. Western Subregional of NEERC, Minsk, Wednesday, November 4, 2015 Problem H. Parallel Worlds 计算几何...

    Problem H. Parallel Worlds 题目连接: http://opentrains.snarknews.info/~ejudge/team.cgi?SID=c75360ed7f2c7 ...

最新文章

  1. Substance Painter实时角色制作视频教程
  2. 【廖雪峰python入门笔记】多重循环
  3. xml方式整合SpringMVC 4整合 Hibernate4
  4. 2020年SAP项目艰辛曲折的开工历程 II
  5. ThinkSNS积分商城系统 一站式解决企业商城建站需求
  6. Java生成xlsx格式的excel文件
  7. 山西DOT NET俱乐部
  8. vc++创建异性窗体(2)
  9. Mac下配置iterm2 支持rz sz命令
  10. 时间管理领域的三八原则
  11. jenkins自动部署--定时轮询svn代码更新并自动发布至测试环境
  12. 分布式红锁的leaseTime的设计原理
  13. Restore IP Address-深度优先遍历DFS
  14. [转]深入Linux网络核心堆栈
  15. 计算机基础实训项目二 Word 综合应用,计算机应用基础-实训项目二 Word 综合应用[优质文档]...
  16. 手机免费使用PDF编辑器一键支持PDF转Word,随时随地处理文档
  17. 宝华计算机维修,唐山市路北区宝华计算机维修服务
  18. 全国计算机等级考试二级web,全国计算机等级考试二级web大纲
  19. 装linux系统的工具箱,PE,Dos工具箱,自动安装linux的U盘制作
  20. 【苦练基本功】代码整洁之道 pt2(第4章-第6章)

热门文章

  1. 英国电信日本东芝公开测试英国首个商用量子安全城域网
  2. 比尔总动员日常任务攻略一
  3. AI 将完全取代前端开发吗?
  4. 计算机组成翟学明,东北大学秦皇岛分校组成原理课程设计.doc
  5. php 转换 html code,PHP 将 HTML 代码 转换到 UBB 论坛代码
  6. doraemon的python 前段开发 标签的认识及运用
  7. iOS中textView和textField键盘的return键点击事件
  8. Henry前端笔记之 Date对象详解
  9. 全志V40/A40I的lichee 的编译
  10. 有趣python 小项目 大全