1359 寻找

1359 寻找

题目描述
小C和小A玩了一个游戏。
游戏是这样的:有一个网格图,每个格子上都有一个箭头,指向一个相邻的格子。小A选择一个格子开

始,然后每次走到箭头指向的格子,然后在任意一个格子结束她的旅程。她告诉小C她在哪个格子借宿旅

程,让小C猜她是从哪个格子开始的。
虽然小C有很强的数学能力,但他还是无法解决这个问题。他只能从小A结束的格子开始随机乱走。设

有cnt个格子中的箭头指向小C现在所在的格子,那么小C各有1/(cnt+1)的概率走到那个cnt个格子里,

还有1/(cnt+1)的概率在当前格子结束旅程。在网格里旅程是要付出代价的。每个格子都有一个权值v,

每次进入一个格子时,小C就要付出v的代价,小C凭借高强的数学能力,一下子就算出了他要付出代价的

期望值。
小C的梦境是混乱的。在他的梦里,他又和小A完了一次这个游戏。但这次,格子上的权值会不断的变化

。面对混乱的情况。小C必须实时知道他从某个格子开始走要付出代价的期望,他只能求助于你。

输入
第一行两个正整数n,m.分别表示网格的行数和列数。
接下来n行,每行m个字符,表示这个格子上的箭头的方向。‘U’表示箭头指向上面的格子,‘D’表示

指向下面的格子,‘L’表示指向左边的,‘R’表示指向右边的。字母均为大写字母,保证没有箭头指向

网格外面,
接下来一行一个正整数Q,表示操作次数。
以下Q行,每行第一个数是op[i]
若op[i]=1,则接下来3个非负整数x[i],y[i],c[i] ,表示把第x[i]行第y[i]列的格子里的数修改成c

[i].
若op[i]=2,则接下来2个非负整数x[i],y[i],表示询问小C从第x[i]行第y[i]列的格子开始走到旅程结

束的花费的期望.

输出
对于每一个op=2,显然答案是一个有理数,设其值为p/q,请找到一个值r使得q*r=1(mod 1000000007),

并输出p*r在模1000000007意义下的值。

样例输入
3 3
RLL
ULU
URL
18
1 1 1 1
1 1 2 2
1 1 3 4
1 2 1 8
1 2 2 16
1 2 3 32
1 3 1 64
1 3 2 128
1 3 3 256
2 1 1
2 1 2
2 1 3
2 2 1
2 2 2
2 2 3
2 3 1
2 3 2
2 3 3

样例输出
375000020
458333351
20
666666706
16
32
64
333333677
666667098

数据范围限制
对于50%的数据:保证;若op[i]=1且op[i]=2;则有i<=j;
对于100%的数据:n*m<=100000,Q<=200000,c[i]<=100000.1<=x[i]<=n,i<=y[i]<=m