高中,高中,短暫的三年。noi是高中結業考試,而高考在每年暑假舉行。題幹如果10^5個詢問,每次都無腦遍歷肯定不行。高二暑假,這是你最後一次參加高考的機會。你已經為了高考停課很久了,oi的知識很久沒管了。你並沒有能力用一年時間補起別人三年的oi課程。這是你的最後一戰,如果你失敗了,可能就不能工地搬磚只能去清華了。
這天你背上行囊赴京趕考。此時全國交通主要靠瞬間傳送裝置。全國交通網路可以抽象為一張 nn 行 mm 列的網格圖。行依次編號為
1,…,n1,…,n,列依次編號為 1
,…,m1,…,m。
有 n+mn+m 個為 00 或 11 的整數 a1,…,an,b1,…,bma1,…,an,b1,…,bm。對於 1≤i≤n1≤i≤n,1≤j≤m1≤j≤m,如果 ai=bjai=bj 那麼網格圖上第 ii 行第 jj 列上標著 00 否則標著 11
。你的家在第 xsxs 行第 ysys 列,高考考場在第 xexe 行第 yeye 列。現在你想從家出發到高考考場去。每次你可以:
向上移動一行。(如果你在第一行那麼移動後會到最後一行去)
向下移動一行。(如果你在最後一行那麼移動後會到第一行去)
向左移動一列。(如果你在第一列那麼移動後會到最後一列去)
向右移動一列。(如果你在最後一列那麼移動後會到第一列去)
對於每次移動,如果移動前的格仔上標的數跟移動後的格仔上標的數不同,那麼就要耗費
11分鐘時間等待瞬移裝置調整配置,否則不耗時間。
現在你想知道你從家出發到高考考場最少需要花多長時間。
輸入格式
第一行兩個正整數 n,mn,m,表示網格圖為 nn 行 mm 列。
第二行 nn 個整數,分別表示 a1,…,ana1,…,an。保證 a1,…,an∈a1,…,an∈。
第三行 mm 個整數,分別表示 b1,…,bmb1,…,bm。保證 b1,…,bm∈b1,…,bm∈。
接下來乙個正整數 qq。
接下來 qq 行,每行四個整數 xs,ys,xe,yexs,ys,xe,ye。表示詢問如果你的家在第 xsxs 行第 ysys 列,高考考場在第 xexe 行第 yeye 列時的最少花費時間。
輸出格式
共 qq 行,每行乙個整數表示最少花費多少分鐘。
樣例一input12
1012
1212
1112
output01
樣例二input
101011
0111
0101
0010
1100
1047
6488
2148
5743
195output24
25限制與約定
測試點編號 n,mn,m的規模 qq的規模
1 n,m≤100n,m≤100 q≤10q≤1023
4 n≤105,m=1n≤105,m=1 q≤105q≤105
56 n,m≤105n,m≤105 q≤105q≤10578
910時間限制:1s1s
空間限制:256mb
想一想橫向移動,和縱向移動是互不影響的,那我單獨考慮變成兩個一維的。
但,10^5次遍歷乙個10^5的圖也還不夠。。。
我們又想到可以用個字首和,表示從第乙個位置到當前位置所用的時間
詢問時:正著走一遍,倒著走一遍,橫縱相加就行。
#include#include**#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
#define ll long long
int n,m,a[100009],b[100009
],q,xs,ys,xe,ye;
int pre[100009],pree[100009
];int work1(int x,int
y)int work2(int x,int
y)int
main()
return0;
}