CF2045M.Mirror Maze
普及+/提高
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
镜子迷宫
给定一个有(R)行(从北到南编号为(1)到(R))和(C)列(从西到东编号为(1)到(C))的网格。这个网格中的每个方格大小相同。位于第(r)行和第(c)列的方格表示为((r,c))。每个方格要么为空,要么在方格的一条对角线上有一面镜子。每面镜子由一条线段表示。如果镜子是从西南角到东北角斜着放置的,则为(1)型镜子;如果是另一条对角线方向,则为(2)型镜子。
这些镜子遵循反射定律,即反射角等于入射角。正式地说,对于(1)型镜子,如果一束光线从方格的北、南、西或东方向射入,那么它将分别被反射到方格的西、东、北和南方向。类似地,对于(2)型镜子,如果一束光线从方格的北、南、西或东方向射入,那么它将分别被反射到方格的东、西、南和北方向。
你想要在网格外放置一个激光发射器,使得激光束能击中所有的镜子。有(2\cdot(R + C))个可能放置激光发射器的位置:
- 从网格北侧的第(c)列((1\leq c\leq C)),向南发射激光束;
- 从网格南侧的第(c)列((1\leq c\leq C)),向北发射激光束;
- 从网格东侧的第(r)行((1\leq r\leq R)),向西发射激光束;
- 从网格西侧的第(r)行((1\leq r\leq R)),向东发射激光束。
确定所有可能放置激光发射器的位置,使得激光束能击中所有的镜子。
输入格式
第一行包含两个整数(R)和(C)((1\leq R,C\leq200))。
接下来的(R)行,每行包含一个长度为(C)的字符串(S_r)。字符串(S_r)的第(c)个字符表示方格((r,c))。每个字符可以是“.”(如果方格为空)、“/”(如果方格有(1)型镜子)或者“\”(如果方格有(2)型镜子)。网格中至少有一面镜子。
输出格式
输出一个整数,表示能使激光束击中所有镜子的激光发射器的可能放置位置的数量,记为(k)。
如果(k>0),则输出(k)个用空格分隔的字符串,表示激光发射器的位置。每个字符串由一个字符和一个紧跟其后的整数组成,中间没有空格。这个字符表示网格的边,如果将激光发射器放在网格的北、南、东或西边,则字符分别为(N)、(S)、(E)或(W)。这个整数表示行/列编号。你可以按任意顺序输出这些字符串。
输入输出样例
输入#1
4 4 .//. .\\. .\/. ....
输出#1
2 N3 W2
输入#2
4 6 ./..\. .\...\ ./../\ ......
输出#2
2 E3 S2
输入#3
4 4 .... ./\. .\/. ....
输出#3
0
说明/提示
样例输入/输出 #1的解释
下面的图示展示了这个样例的一个解决方案。
样例输入/输出 #2的解释
下面的图示展示了这个样例的一个解决方案。

输入解题思路,AI测评打分。不知道怎么写?