BZOJ1047 HAOI2007 理想的正方形

2022-05-12 14:44:56 字數 718 閱讀 8204

**佇列:

題目傳送門:

對於每一行用單調不增和單調不減佇列分別維護最小值和最大值。

對於列,也用單調不增和單調不減佇列分別維護最小值和最大值。

步驟如下:

\(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...