loj#P6259. 「CodePlus 2017 12 月赛」白金元首与独舞
「CodePlus 2017 12 月赛」白金元首与独舞
题目描述
到河北省 见斯大林 / 在月光下 你的背影 / 让我们一起跳舞吧
うそだよ~ 河北省怎么可能有 Stalin。
可是…… 可是如果 Stalin 把自己当作炸弹扔到地堡花园里来了呢?
怀揣着这份小小的希望,元首 Adolf 独自走进了花园。终有一天会重逢的吧,Stalin。或许是在此处,或许是在遥远的彼方。
无论如何,在此之前,好好装点一番花园,编排一段优美的舞步吧!
元首把花园分为 行 列的网格。每个格子中都可以放置一个标识,指向上、下、左、右四个方向中的任意一个。元首位于一个格子时,会按照其中标识所指的方向进入周围的格子,或者走出花园(即目的格子不在网格之内)。举个例子 —— 对于下面的放置方式,元首从第 行第 列的格子开始,会沿着以红色标出的路径走出花园;从第 行第 列的格子开始,则会在以蓝色标出的环路内不断地行走。
← ↑ ←
↓ ← ↑
→ ↓ ←
元首已经设计好了大部分格子的标识。元首用字符 L
、R
、U
、D
分别表示指向左、右、上、下四个方向的标识,用字符 .
表示未决定的格子。现在,元首希望将每个 .
替换为 L
、R
、U
、D
中任意一种,使得从花园中的任意一个格子出发,按照上述规则行走,都可以最终走出花园。
你需要编写程序帮助元首计算替换的不同方案数。两个方案不同当且仅当存在一个格子,使得两个方案中该格子内的标识不同。当然,由于答案可能很大,只需给出方案数除以 所得的余数即可。
输入格式
从标准输入读入数据。
输入的第一行包含一个正整数 —— 测试数据的组数。接下来包含 组测试数据,格式如下,测试数据间没有空行。
- 第 行:两个空格分隔的正整数 、 —— 依次表示花园被分成的行数和列数。
- 接下来 行:每行一个长度为 的由字符
L
、R
、U
、D
和.
组成的字符串 —— 表示花园内已经确定的格子状态。
输出格式
输出到标准输出。
对于每组测试数据输出一行 —— 满足条件的方案数除以 所得的余数。
5
3 9
LLRRUDUUU
LLR.UDUUU
LLRRUDUUU
4 4
LLRR
L.LL
RR.R
LLRR
4 3
LRD
LUL
DLU
RDL
1 2
LR
2 2
..
..
3
8
0
1
192
数据范围与提示
令 表示标记未确定(即包含 “.
”)的格子总数。
对于所有数据,有 ,,。
测试点编号 | , | 特殊约定 | |
---|---|---|---|
1 | 无 | ||
2 | |||
3 | |||
4 | |||
5 | |||
6 | |||
7 | |||
8 | |||
9 | |||
10 | |||
11 | |||
12 | |||
13 | 有且仅有第 行的所有格子中标记未确定 | ||
14 | |||
15 | |||
16 | 无 | ||
17 | |||
18 | |||
19 | |||
20 |
“... wie Stalin!”
题面与史实无关。
来自 CodePlus 2017 12 月赛,清华大学计算机科学与技术系学生算法与竞赛协会 荣誉出品。
Credit:idea/吕时清 命题/吕时清 验题/王聿中,杨景钦
Git Repo:https://git.thusaac.org/publish/CodePlus201712
感谢腾讯公司对此次比赛的支持。