P2216 [HAOI2007] 理想的正方形
发现没有人和我用同一个做法,遂发题解。
考虑暴力,首先枚举
发现
复杂度
inline void Init(){
memset(maxn,-0x3f,sizeof(maxn));
memset(minn, 0x7f,sizeof(minn));
for_(i,1,a-n+1){
for_(j,1,b){
for_(k,1,n){
maxn[i][j] = max(maxn[i][j] ,mapp[i+k-1][j]); // maxn_{i,j} 为以 (i,j) 为起点向右延申 n 格的矩阵内最大值
minn[i][j] = min(minn[i][j] ,mapp[i+k-1][j]);
}
}
}
}
inline void solve(){
for_(i,1,a-n+1){
for_(j,1,b-n+1){
int MAX=-inf,MIN=inf;
for_(k,1,n){
MAX=max(MAX,maxn[i][j+k-1]);
MIN=min(MIN,minn[i][j+k-1]);
}
ANS=min(ANS,MAX-MIN);
}
}
cout << ANS << endl;
}
inline void In(){
cin >> a >> b >> n;
for_(i,1,a){
for_(j,1,b){
cin >> mapp[i][j] ;
}
}
Init();
solve();
}