理想的正方形

2022-08-22 17:54:12 字數 1484 閱讀 6751

有乙個a x b的整數組成的矩陣,現請你從中找出乙個n x n的正方形區域,使得該區域所有數中的最大值和最小值的差最小。

第一行為三個整數,分別表示a,b,n的值;

第二行至第a+1行每行為b個非負整數,表示矩陣中相應位置上的數。

輸出僅乙個整數,為axb矩陣中所有nxn正方形區域中的最大整數和最小整數的差值的最小值。

5 4 2

1 2 5 6

0 17 16 0

16 17 2 1

2 10 2 1

1 2 2 2

1
//

二維單調佇列模板題

#includeusing

namespace

std;

const

int n = 1e3 + 7

;struct

node qmax[n], qmin[n];

intrmin[n][n], rmax[n][n], cmin[n][n], cmax[n][n], a[n][n], n, m, r;

intmain()

}for (int i = 1; i <= n; i++) ;

while (minhead < mintail && qmin[minhead].pos <= j - r) minhead++;

rmin[i][j] =qmin[minhead].data;

//維護最大值

while (maxhead < maxtail && qmax[maxtail - 1].data < now) maxtail--;

qmax[maxtail++] =node;

while (maxhead < maxtail && qmax[maxhead].pos <= j - r) maxhead++;

rmax[i][j] =qmax[maxhead].data;}}

for (int j = r; j <= m; j++) ;

while (minhead < mintail && qmin[minhead].pos <= i - r) minhead++;

cmin[i][j] =qmin[minhead].data;

//維護最大值

while (maxhead < maxtail && qmax[maxtail - 1].data < nowmax) maxtail--;

qmax[maxtail++] =node;

while (maxhead < maxtail && qmax[maxhead].pos <= i - r) maxhead++;

cmax[i][j] =qmax[maxhead].data;}}

int ans = 0x3f3f3f3f

;

for (int i = r; i <= n; i++)

}cout

<< ans

}

HAOI 2007 理想的正方形

有乙個a b的整數組成的矩陣,現請你從中找出乙個n n的正方形區域,使得該區域所有數中的最大值和最小值的差最小。輸入格式 第一行為3個整數,分別表示a,b,n的值 第二行至第a 1行每行為b個非負整數,表示矩陣中相應位置上的數。每行相鄰兩數之間用一空格分隔。輸出格式 僅乙個整數,為a b矩陣中所有 ...

HAOI2007 理想的正方形

時間限制 10 sec 記憶體限制 162 mb 有乙個a b的整數組成的矩陣,現請你從中找出乙個n n的正方形區域,使得該區域所有數中的最大值和最小值 的差最小。第一行為3個整數,分別表示a,b,n的值第二行至第a 1行每行為b個非負整數,表示矩陣中相應位置上的數。每 行相鄰兩數之間用一空格分隔。...

HAOI2007 理想的正方形

有乙個a b的整數組成的矩陣,現請你從中找出乙個n n的正方形區域,使得該區域所有數中的最大值和最小值的差最小.第一行為3個整數,分別表示a,b,n的值第二行至第a 1行每行為b個非負整數,表示矩陣中相應位置上的數.每行相鄰兩數之間用一空格分隔.100 的資料2 a,b 1000,n a,n b,n...