D. 徐老师的定向机器人

    传统题 1000ms 512MiB

徐老师的定向机器人

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

题目描述

徐老师最近又开始玩他的机器人了,这天他决定让机器人去参加一下现在很热门的《寻路比赛》

一开始他以为这是一个高端人工智能竞赛,需要机器人通过周围的环境自主判断路线并进行移动

结果发现这个比赛相当简单!

主办方会给出一张地图铺在地上,地图大小为 nmn * m,每个格子中会画一个英文指示符:U,D,L,RU,D,L,R 和一个数字 Gi,jG_{i,j}

其中英文指示符表示当机器人踏入这个格子时,下一步只能向指示符对应的方向移动,UDLR 分别对应了 上下左右,而 Gi,jG_{i,j} 则表示当机器人踏入这个格子时的得分

为了增加比赛难度,主办方还额外增加了两项规则:

  1. 由于机器人是一个人型机器人,所以在移动时必须左右脚交替移动,并且每次移动只能踏出一步,而当左脚踏入某个格子时,会获得 Gi,jG_{i,j} 点得分,如果是右脚踏入某个格子,则会扣掉 Gi,jG_{i,j} 点得分
  2. 当机器人踏入一个格子,并且计算该格子的得分后,这个格子的数字 Gi,jG_{i,j} 将会变化为 Gi,j-G_{i,j},即相反数

比如机器人现在左脚踏入了格子 (3,4)(3,4),这个格子上的指示符为 UU,数字 G3,4=3G_{3,4}=3,那么会获得 33 点得分,并且下一步机器人将以右脚踏入 (2,4)(2,4) 并扣掉 G2,4G_{2,4} 点得分

现在主办方会指定起点 (sti,stj)(st_i,st_j),并且要求所有选手的机器人必须以左脚踏入这个起点开始移动

在移动过程中,当机器人移动到地图外时,这一轮比赛就会结束,并且获得当前的得分

当然,选手也可以在机器人移动中途随时结束,不再让机器人继续移动,也可以获得当前的得分

这个问题对徐老师来说可太简单了,其他选手考虑的是如何从起点出发获得最高分

而徐老师考虑的就多了,他决定计算出以任意格子作为起点时的最高得分!

现在徐老师请你也一起来挑战这个问题,和他的答案做个对照

输入格式

输入第一行包含两个整数 n,mn,m 表示地图大小

接下来 nn 行,每行包含一个长度为 mm 的字符串,分别表示这一行中每个格子上的指示符

接下来 nn 行,每行包含 mm 个整数,分别表示这一行中每个格子上的数字 Gi,jG_{i,j}

输出格式

由于答案过多,所以请你按照以下方式输出答案 ansans

设 cnt[i][j] 表示以 (i,j) 为起点时的最大得分
const long long MOD = 1e9 + 7;
long long ans = 0, base = 1;
for (int i = 1; i <= n; ++i) {
	for (int j = 1; j <= m; ++j){
	    ans = (ans + cnt[i][j] * base % MOD) % MOD;
	    base = base * 131 % MOD;
	}
}

数据范围

对于 10%10\% 的数据满足: 1n101 \leq n \leq 10

对于 40%40\% 的数据满足: 1n1001 \leq n \leq 100

对于另外 10%10\% 的数据满足 1n10001 \leq n \leq 1000 且指示符只有可能是 DD 或者 RR

对于 100%100\% 的数据满足: 1n1000,109Gi,j1091 \leq n \leq 1000, -10^9 \leq G_{i,j} \leq 10^9

保证指示符只有可能是 UDLR 其中一个大写字母

样例输入1

3 3
DRD
RUD
DLD
1 2 3
4 5 6
7 8 -1

样例输出1

-697283612

样例解释1

每个点出发的最大得分别是

3 6 3
5 6 7
7 8 -1

样例输入2

3 3
RRR
RRD
ULL
1 2 3
4 5 6
7 8 9

样例输出2

583610153

样例解释2

每个点出发的最大得分分别是

2 2 3
5 8 6
11 8 9

2025CSP-S暑假模拟赛五

未参加
状态
已结束
规则
IOI
题目
4
开始于
2025-8-4 21:30
结束于
2025-8-14 21:30
持续时间
240 小时
主持人
参赛人数
21