p2216 [haoi2007]理想的正方形
那來練手的板子題。
去年普及組考慮單調佇列,感覺很慌。
然後打算再複習一波。
就找到了這個題。
題目中\(a,b\)不大,可以容忍\(o(ab)\)的複雜度。
而且子矩陣的寬度也是有限制的,最大最小也是可以分別分開計算的。
所以可以先統計\(n \ast 1\)大小的矩陣,然後縮成乙個元素,表示這個大小的矩陣的值,儲存起來。再在縮完後的跑一邊\(1\ast n\)的情況,就統計出\(n\ast n\)的矩陣了。
然後使用單調佇列
#include#include#include#includeusing std::min;
const int maxn=1010;
int base[maxn][maxn];
int t[maxn][maxn][2];
struct node
void push(int val,int pos)
void pop(int pos)
int front()
};node max,min;
int main()
}int ans=0x7fffffff;
for(int i=1;i<=a-n+1;i++)
}printf("%d",ans);
}
P2216 HAOI2007 理想的正方形()
題目鏈結 有乙個a乘b的整數組成的矩陣,現請你從中找出乙個nn的正方形區域,使得該區域所有數中的最大值和最小值的差最小。輸入輸出格式 輸入格式 第一行為3個整數,分別表示a,b,n的值 第二行至第a 1行每行為b個非負整數,表示矩陣中相應位置上的數。每行相鄰兩數之間用一空格分隔。輸出格式 僅乙個整數...
P2216 HAOI2007 理想的正方形
有乙個a b的整數組成的矩陣,現請你從中找出乙個n n的正方形區域,使得該區域所有數中的最大值和最小值的差最小。輸入格式 第一行為3個整數,分別表示a,b,n的值 第二行至第a 1行每行為b個非負整數,表示矩陣中相應位置上的數。每行相鄰兩數之間用一空格分隔。輸出格式 僅乙個整數,為a b矩陣中所有 ...
P2216 HAOI2007 理想的正方形
有乙個 a b 的整數組成的矩陣,現請你從中找出乙個 n n 的正方形區域,使得該區域所有數中的最大值和最小值的差最小。輸入格式 第一行為三個整數,分別表示 a,b,n 的值 第二行至第 a 1 行每行為 b 個非負整數,表示矩陣中相應位置上的數。輸出格式 輸出僅乙個整數,為 a b 矩陣中所有 n...