**佇列:
題目傳送門:
對於每一行用單調不增和單調不減佇列分別維護最小值和最大值。
對於列,也用單調不增和單調不減佇列分別維護最小值和最大值。
步驟如下:
\(1\)、每一行分別把前\(n\)個數的單調佇列建好。
\(2\)、取出每一行隊頭的元素用列的單調佇列維護並更新答案。
\(3\)、把每一行在\([2,n+1]\)的元素用單調佇列維護好,依次類推,直到\([b-n+1,b]\)的答案被統計完。
時間複雜度:\(o(ab)\)
空間複雜度:\(o(ab)\)
**如下:
#include #include using namespace std;
const int maxn=1005;
int list1[maxn],list2[maxn];
int a,b,n,head1,tail1,head2,tail2,ans=2e9;
int read()
struct queue_mn
int front()
}mn[maxn];
struct queue_mx
int front()
}mx[maxn];
int main()
} printf("%d\n",ans);
return 0;
}
bzoj1047 haoi2007 理想正方形
time limit 10 sec memory limit 162 mb submit 2151 solved 1146 submit status discuss 有乙個a b的整數組成的矩陣,現請你從中找出乙個n n的正方形區域,使得該區域所有數中的最大值和最小值的差最小。第一行為3個整數,分...
bzoj1047 haoi2007 理想的正方形
有乙個a b a ba b的整數組成的矩陣,現請你從中找出乙個n n的正方形區域,使得該區域所有數中的最大值和最小值的差最小。輸入格式 第一行為3個整數,分別表示a,b,n的值 第二行至第a 1行每行為b個非負整數,表示矩陣中相應位置上的數。每行相鄰兩數之間用一空格分隔。輸出格式 僅乙個整數,為ab...
1047 HAOI2007 理想的正方形
題目鏈結 題目大意 有乙個a b的整數組成的矩陣,現請你從中找出乙個n n的正方形區域,使得該區域所有數中的最大值和最小值的差最小。題解 顯然二維rmq就可以過了 但是用二維滑動視窗可以o n 2 維護 找矩陣中的最小值時維護單調上公升佇列,橫豎各一遍即可 我的收穫 單調佇列神啊 include i...