#题面
#题目背景
高中,高中,短暂的三年。NOI 是高中结业考试,而高考在每年暑假举行。
高二暑假,这是你最后一次参加高考的机会。你已经为了高考停课很久了,OI 的知识很久没管了。你并没有能力用一年时间补起别人三年的 OI 课程。这是你的最后一战,如果你失败了,可能就不能工地搬砖只能去清华了。
#题目描述
这天你背上行囊赴京赶考。此时全国交通主要靠瞬间传送装置。全国交通网络可以抽象为一张 行 列的网格图。行依次编号为 ,列依次编号为 。
有 个为 或 的整数 。对于 ,,如果 那么网格图上第 行第 列上标着 否则标着 。
你的家在第 行第 列,高考考场在第 行第 列。现在你想从家出发到高考考场去。每次你可以:
- 向上移动一行。(如果你在第一行那么移动后会到最后一行去)
- 向下移动一行。(如果你在最后一行那么移动后会到第一行去)
- 向左移动一列。(如果你在第一列那么移动后会到最后一列去)
- 向右移动一列。(如果你在最后一列那么移动后会到第一列去)
对于每次移动,如果移动前的格子上标的数跟移动后的格子上标的数不同,那么就要耗费 分钟时间等待瞬移装置调整配置,否则不耗时间。
现在你想知道你从家出发到高考考场最少需要花多长时间。
#输入格式
第一行两个正整数 ,表示网格图为 行 列。
第二行 个整数,分别表示 。保证 。
第三行 个整数,分别表示 。保证 。
接下来一个正整数 。
接下来 行,每行四个整数 。表示询问如果你的家在第 行第 列,高考考场在第 行第 列时的最少花费时间。
#输出格式
共 行,每行一个整数表示最少花费多少分钟。
#输入输出样例
样例输入 #1
1 2
1
0 1
2
1 2 1 2
1 1 1 2
样例输出 #1
0
1
样例输入 #2
10 10
1 1 0 1 1 1 0 1 0 1
0 0 1 0 1 1 0 0 1 0
4
7 6 4 8
8 2 1 4
8 5 7 4
3 1 9 5
样例输出 #2
2
4
2
5
#数据范围与约定
测试点编号 | |||
---|---|---|---|
#思路
由题可知,每次移动只能向上下左右四个方向移动。因为 的权值由 和 决定,所以从 移动到 的耗时与 的取值无关,在 轴上同理。那么可以分开处理 轴和 轴,计算出移动距离的前缀和即可以常数级别的复杂度处理每次询问。需要注意的是,向反方向移动也可以到达终点,因此需要取正向移动和反向移动耗时的最小值作为答案。
#代码
1 |
|