矩阵的最大面积子矩阵
ZJOI2007]棋盘制作 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
注意:维护单调递增序列时,删去的高度对前面的影响结束了,但是对后面依然有影响
//f[i][j]表示第i行第j列的高度
void judge(int x, int l, int r)//判断第x行的[l,r]
{
int top;
deque<int> q;
for (int j = l; j <= r; j++)
{
top = j;
while (!q.empty() && f[x][q.back()] > f[x][j])
{
top = q.back();//重点,
ans = max(ans, (j - q.back()) * f[x][q.back()]);
//正方形
int mi = min((j - q.back()), f[x][q.back()]);
ans1 = max(ans1, mi * mi);
q.pop_back();
}
f[x][top] = f[x][j];//重点
q.push_back(top);
}
while (!q.empty())
{
ans = max(ans, (r - q.front() + 1) * f[x][q.front()]);
int mi = min((r - q.front() + 1), f[x][q.front()]);
ans1 = max(ans1, mi * mi);
q.pop_front();
}
}