#P5897. [IOI2013] wombats
[IOI2013] wombats
题目描述
布里斯班被变异的袋熊占领,你必须带领大家去安全的地方。
布里斯班的道路像一个大网格,有 条东西向的横向道路,从北向南依次编号为 ,有 条南北向的纵向道路,从西向同东依次编号为 ,如下图所示。
袋熊从北方入侵,人们逃向南方。人们可以在横向道路上双方向移动,但是在纵向道路上只能往南面安全的地方走。
横向道路 和纵向道路 的交点表示为 。相邻 个交点之间的道路线段上 有一些袋熊,且数目是随时间变化的。 你的任务是引导每个人从最北边(在横向道路 上)的指定交点逃到最南端(在横向道路 上)的指定交点,路上经过 的袋熊最少。
首先会告诉你网格的规模以及每条道路线段上的袋熊的数量。然后给你一系列 事件,每个事件是下列两者之一:
- 变化,表示有些道路线段上的袋熊数量发生变化;
- 逃离, 表示有些人已到达横向道路 上指定交点,你必须给他们指出一条路,通往横向道路 上指定交点且路上遇到的袋熊最少。
举例
上图所示的初始地图中有 条横向道路 ( )和 条纵向道路( ),每 条道路线段上的袋熊数目如线段上的标记所示。考虑下列事件:
- 一个人到达交点 ,希望逃到交点 。如图上虚线所示,他最少需要经过 只袋熊。
- 又一个人到达交点 ,希望逃到交点 。如图上虚线所示,他最少需要经过 只袋熊。
- 发生 个变化事件:纵向道路 上最上面那条道路线段上的袋熊数目变为 ,横向道路 上中间那条道路线段上的袋熊数目变为 ,见下图中圈出来的两个数字。
- 第3个人到达交点 ,希望逃到交点 ,现在他最少需要经过 只袋熊,如图中虚线所示。
输入格式
- 第 行: 表示横向道路的数目, 表示纵向道路的数目。
- 第 行: 。
- 第 行: 。
- 第 行: 。
- : 二维数组 ,其中 表示交点 和交点 之间的横向道路线段上的袋熊数目。
- 第 行: 。
- : 二维数组 ,其中 表示交点 和交点 之间的纵向道路线段上的袋熊数目。
- 下一行: 。
- 下 行:每行一个事件,按照事件发生的顺序给出。
如果 ,表示横向道路上每条道路线段上的袋熊数目的若干空行(第 到 行)将会被省略。
表示每个事件的那一行格式如下:
1 P Q W
表示 将交点 和交点 之间的横向道路线段上的袋熊数目改为 。2 P Q W
表示 将交点 和交点 之间的纵向道路线段上的袋熊数目改为 。3 V1 V2
表示 计算一个人从交点 逃到交点 最少需要经过多少只袋熊。
例如:题目中的例子应该表示为以下格式
3 4
0 2 5
7 1 1
0 4 0
0 0 0 2
0 3 4 7
5
3 2 1
3 3 3
2 0 0 5
1 1 1 6
3 2 1
输出格式
对于每一次询问,给出最少经过袋熊数。
3 4
0 2 5
7 1 1
0 4 0
0 0 0 2
0 3 4 7
5
3 2 1
3 3 3
2 0 0 5
1 1 1 6
3 2 1
2
7
5
提示
对于 的数据,,,最多 个变化,最多 次询问,任意时刻一条道路上最多 只袋熊。