CF2055C.The Trail
普及-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
佛罗里达没有山脉,佛罗里达人无法理解它们的存在。因此,他非常需要你的帮助。
在荒野中有一片山区地带,用一个 n 行 m 列的矩形网格表示。网格中的每个单元格由其位置 (i,j) 标识,其中 i 是行索引,j 是列索引。单元格 (i,j) 的海拔高度记为 ai,j。
然而,这片区域被人为篡改过。一条由 n+m−1 个单元格组成的路径,从左上角 (1,1) 出发,最终到达右下角 (n,m),路径上的每个单元格 (i,j) 的高度 ai,j 都被设置为 0。这条路径只能严格地向下(D)或向右(R)移动。
为了恢复地形的原貌,已知在被篡改之前,这片区域拥有一种神奇的性质:所有行和所有列的海拔高度之和都相同。更正式地说,存在一个整数 x,使得对于所有 1≤i≤n,都有 ∑j=1mai,j=x,并且对于所有 1≤j≤m,都有 ∑i=1nai,j=x。
你的任务是为路径上的单元格重新赋予高度,使上述神奇性质得以恢复。可以证明,总是存在解。如果有多个满足条件的解,输出任意一个即可。
输入格式
每个测试点包含多个测试用例。第一行包含一个整数 t(1≤t≤104),表示测试用例的数量。
每个测试用例的第一行包含两个整数 n 和 m(2≤n,m≤1000),表示网格的行数和列数。
第二行包含一个长度为 n+m−2 的字符串 s(si=D 或 si=R),表示从 (1,1) 到 (n,m) 的路径。字符 D 表示向下走一步,R 表示向右走一步。
接下来的 n 行,每行包含 m 个整数 ai,1,ai,2,…,ai,m(−106≤ai,j≤106),表示网格中每个单元格的高度。保证如果单元格 (i,j) 在路径上,则 ai,j=0。
保证所有测试用例中 n×m 的总和不超过 106。
输出格式
对于每个测试用例,输出 n 行,每行 m 个整数,表示恢复后的网格高度 bi,j。要求 −1015≤bi,j≤1015,并且如果 (i,j) 不在路径上,则 ai,j=bi,j。如果有多个解,输出任意一个即可。
输入输出样例
输入#1
4 3 3 DRRD 0 2 3 0 0 0 3 1 0 4 5 DRRRRDD 0 1 0 2 3 0 0 0 0 0 -1 0 -3 -3 0 0 0 0 -1 0 2 3 RRD 0 0 0 0 1 0 5 5 DDDDRRRR 0 25 2 9 11 0 6 13 20 22 0 17 24 1 8 0 3 10 12 19 0 0 0 0 0
输出#1
1 2 3 2 3 1 3 1 2 -6 1 0 2 3 7 -1 3 2 -11 -1 0 -3 -3 7 0 0 0 -1 1 0 -1 1 0 1 -1 18 25 2 9 11 4 6 13 20 22 15 17 24 1 8 21 3 10 12 19 7 14 16 23 5
说明/提示
在第一个测试用例中,网格被填充为每行和每列都包含 1,2,3,它们的和都是 6。
在第二个测试用例中,网格被填充为所有行和列的和都是 0。