Logo Universal Online Judge

UOJ

时间限制:1.5 s 空间限制:2048 MB
统计

一块停车场被分割成 $n\times m$ 个网格。网格图中除了障碍不能停车,其余所有地方都被 $1\times 2$ 的车辆停满了。

作为高贵的 R 星玩家,也是停车场的管理员,为了方便出行,你需要依次进行如下操作:

$1.$ 让恰好一辆车瞬间爆炸消失,然后在消失的位置中选择 $k$ 个补上障碍。

$2.$ 对于剩余的车辆,你可以让其中的一辆向前或向后行驶。这一步可以进行任意次

$3.$ 任何时刻,除开爆炸的车辆,其余车辆至少跟初始位置有一个公共格子

对于一辆没有爆炸的车,如果它的结束位置和初始位置相比进行了横向位移,能获得 $x$ 分;如果进行了纵向位移,能获得 $y$ 分;否则不得分。

你需要根据网格图的类型,回答如下问题:

$1.$ 网格图中没障碍时:此时 $k=0$。最终有多少种可能的局面

$2.$ 网格图中有障碍时:此时 $k=1$。设 $id(x,y)=m(x-1)+y$。对于每一辆车,设它占据的位置为 $(a,b)$ 和 $(c,d)$,则它的贡献为第一步让它爆炸之后的所有局面得分之和的 $998244353^{id(a,b)+id(c,d)}$ 倍。请求出所有的贡献之和。

两种局面不同,当且仅当存在一个格子在两种方案中的类型不同。格子有三类:被车辆停靠,障碍或空格子。

答案对 $10^9+7$ 取模。

【输入格式】

从文件 c.in 中读入数据。

本题有多组数据。

第一行输入两个整数 $sid$,$T$ 表示测试点编号和数据组数。样例的 $sid=0$。

对于每组数据:

第一行,输入 $n,m,x,y$。

接下来 $n$ 行,每行输入一个长度为 $m$ 的字符串,表示整个网格图。其中 $\mathsf{U}$ 表示车辆前端,$\mathsf{D}$ 表示车辆后端,$\mathsf{L}$ 表示车辆左端,$\mathsf{R}$ 表示车辆右端,$\mathsf{X}$ 表示障碍。

【输出格式】

输出到文件 c.out 中。

对于每组数据,输出一行表示问题的答案。

【数据范围与提示】

对于 100\% 的数据,$1\le n\times m\le 5\times 10^5$,保证初始局面合法。

对于所有测试点,保证 $\sum n\times m$ 均不超过该测试点对应单组数据范围的五倍。

每个测试点的具体限制见下表:

测试点编号 $n\times m \leq$ 特殊性质
1-2 $40$
3-5 $5\times 10^5$ $n=2$
6-9 $5\times 10^3$ 所有数据均没有障碍
10-13 $5\times 10^3$ 所有数据均没有障碍
14-15 $5\times 10^4$
16-20 $5\times 10^5$ 所有数据均没有障碍
21-25 $5\times 10^5$