CF1346F Dune II: Battle For Arrakis
题目描述
在一款非常古老、非常流行的策略游戏《Dune II: Battle For Arrakis》中,你到了了最后一项任务。大小为n乘以mn×m的矩形矩阵。最初,有一个a[i,j]。你们部队在单元格里的单位(i,j)(i,j)。
你想为最后的战斗做准备,所以你想把你所有的军队移动到地图的一个单元中(即nm-1 nm−1单元格应包含0个陆军单位,其余单元格应包含整个陆军单位)。
要做到这一点,您可以执行一些(可能是零)步数。在一次移动过程中,您可以从某个单元中选择一个单元,然后将其移动到相邻的相邻单元之一。即从单元(I,j)(I,j)可以将单元移动到单元:
(i-1,j)(i)−1,j);
(i,j-1)(i,j−1) ;
(i+1,j)(i+1,j);
(i,j+1)(i,j+1)。
当然,你要尽可能快地把你所有的军队转移到一个单元格里。所以,你想知道你需要做的最小移动次数。
并且,当然,生活还在继续,所以地图上的情况发生了变化。有q更新,第i次更新由三个整数x,y,zx,y,z表示。此更新影响单元(x,y)(x,y)中的陆军:此更新后,单元(x,y)(x,y)中的单位数变为z(即用z替换a[x,y])。
此外,您还需要确定,对于每个i,将整个军队移动到一个单元所需的最小移动次数,并将第一次i更新应用于初始地图。换句话说,第i次更新后的映射等于应用了第一次i次更新的初始映射。
输入格式
输入的第一行包含三个整数n、mn、m和q(1\le n、m\le 1000;1\le q\le 5000 1≤n、 m≤1000;1≤q≤5000)-矩阵的大小和相应的更新次数。
接下来的n n行包含m m个整数,其中第i行中的第j个整数是a[i,j](1≤a[i,j]≤10^9))-单元中的单元数(i,j)(i,j)。
接下来的q行各包含三个整数,其中第i行包含三个整数x_i,y_i还有z_i(1≤x_i≤n;1≤y_i≤m;1≤z_i≤10^9)-单元数更新的单元以及该单元中相应的新单元数。
输出格式
打印q+1整数r_0,r_1,r_2,…r_n,其中r_0是将所有军队移动到一个单元格中所需的最小移动次数,r_i表示从1到q q的所有i i i是在第一次i更新后将所有军队移动到一个单元格中所需的最小移动次数。