#P4150. [WC2009] 最短路问题

    ID: 3088 远端评测题 6000ms 500MiB 尝试: 0 已通过: 0 难度: 7 上传者: 标签>2009线段树WC/CTSC/集训队O2优化

[WC2009] 最短路问题

题目描述

【问题描述】

一个 6n6 * n 的方格,初始每个格子有一个非负权值。有如下两种操作形式:

○改变一个格子的权值(改变以后仍然非负);

○求两个格子之间的最短路的权值。

【注解与任务】

任意格子 PP 的坐标(xP,yP)(x_P, y_P)满足 1xP61 \leq x_P \leq 61yPn1 \leq y_P \leq n。格子 PPQQ 的曼哈顿距离定义为xPxQ+yPyQ|x_P - x_Q| + |y_P - y_Q|。一个有序方格序列(p1,p2,...,pn)(p_1, p_2, ..., p_n),若满足任意 pip_ipi+1p_i + 1 的曼哈顿距离为 11,则称该序列为一条从 p1p_1pnp_n 的路径,其权值为d(p1)+d(p2)+d(p1) + d(p2) + ...+d(pn) + d(p_n),其中 d(P)d(P) 表示格子 PP 的权值。两个格子 PPQQ 之间的最短路定义为从 PPQQ 权值最小的路径。

输入格式

第一行一个整数 nn。接下来 66 行,每行 nn 个整数,第 i+1i + 1 行第 jj 个整数表示初始格子(i,j)(i, j)的权值。接下来是一个整数 QQ, 后面的 QQ 行,每行描述一个操作。

输入的操作有以下两种形式:

操作 11: "1 x y c1\ x\ y\ c"(不含双引号)。表示将格子(x,y)(x, y)的权值改成 cc (1x61 \leq x \leq 6, 1yn1 \leq y \leq n, 0c100000 \leq c \leq 10000) 。

操作 22: "2 x1 y1 x2 y22\ x_1\ y_1\ x_2\ y_2"(不含双引号)。表示询问格子(x1,y1)(x_1, y_1)和格子(x2,y2)(x_2, y_2)之间的最短路的权值。(1x1,x261 \leq x_1, x_2 \leq 6, 1y1,y2n1 \leq y_1, y_2 \leq n

输出格式

对于每个操作 22,按照它在输入中出现的顺序,依次输出一行一个整数表示

求得的最短路权值。

5
0 0 1 0 0
0 1 0 1 0
0 2 0 1 0
0 1 1 1 0
0 0 0 0 0
1 1 1 1 1
5
2 1 2 1 4
1 1 1 10000
2 1 2 1 4
1 2 3 10000
2 1 2 3 3
0
1
2

提示

数据编号 nn QQ 数据编号 nn QQ
11 1010 2020 66 10410^4 3×1043\times 10^4
22 100100 200200 77 3.5×1043.5\times 10^4
33 10310^3 2×1032\times 10^3 88 5×1045\times 10^4
44 10410^4 99 10510^5 6×1046\times 10^4
55 1010 10510^5