#CF2049D. Shift + Esc
Shift + Esc
D. Shift + Esc
每个测试用例时间限制: 秒 每个测试用例内存限制: 兆字节
龙埃维里尔在摆弄某个装置被抓后,决定好好运用自己的魔法能力——扭曲现实快速逃离!
给定一个由非负整数组成的 行 列的网格,以及一个整数 。用 表示从上往下数第 行、从左往右数第 列的单元格(满足约束 ,)。对于每个单元格 ,单元格内写有整数 。
你初始位于 ,想要前往 。你只能向下或向右移动。也就是说,若你当前在 ,则只能移动到 或 (对应单元格存在时)。
在开始移动之前,你可以执行任意次数以下操作: 选择一个满足 的整数 ,将第 行循环左移 位。 形式化描述:对于所有满足 的整数 ,同时令 。
注意:你不能在开始移动后执行任何操作。
从 移动到 后:
- 设 为移动前执行的总操作次数;
- 设 为经过的所有单元格上的整数之和(包含起点 和终点 )。
则代价定义为:。
请你求出从 移动到 的最小代价。
输入
每个测试文件包含多组测试用例。
- 第一行输入测试用例的数量 ()。
- 每组测试用例的格式:
- 第一行输入三个空格分隔的整数 (,)。
- 接下来 行,第 行包含 个空格分隔的整数 ()。
保证:所有测试用例的 之和不超过 。
输出
对于每组测试用例,输出一个整数,表示移动的最小代价。
样例输入
5
3 3 100
3 4 9
5 2 4
0 101 101
3 4 1
10 0 0 10
0 0 10 0
10 10 0 10
1 1 3
4
3 2 3
1 2
3 6
5 4
10 10 14
58 49 25 12 89 69 8 49 71 23
45 27 65 59 36 100 73 23 5 84
82 91 54 92 53 15 43 46 11 65
61 69 71 87 67 72 51 42 55 80
1 64 8 54 61 70 47 100 84 50
86 93 43 51 47 35 56 20 33 61
100 59 5 68 15 55 69 8 8 60
33 61 20 79 69 51 23 24 56 28
67 76 3 69 58 79 75 10 65 63
6 64 73 79 17 62 55 53 61 58
样例输出
113
6
4
13
618
样例解释
-
第一组测试用例 最小代价 的获取方式: 将第 行循环左移 次,网格变为:
$$\begin{bmatrix} 3 & 4 & 9 \\ 5 & 2 & 4 \\ 101 & 101 & 0 \end{bmatrix} $$移动路径:。 操作次数 ,路径和 。 代价:。
-
第二组测试用例 对第 行左移 次、第 行左移 次、第 行左移 次,网格变为:
$$\begin{bmatrix} 0 & 0 & 10 & 10 \\ 10 & 0 & 0 & 0 \\ 0 & 0 & 10 & 10 \end{bmatrix} $$操作次数 ,路径和 。 花费:。