索引消模:用 s2=s+s,则 Ar,c=s2[(n−r)+c],避免每格做取模。
最大矩形(全为 .):维护直方图高度 H[c](当前行该列为 . 则 H[c]←H[c]+1,否则 H[c]←0),对每一行用单调栈在 O(n) 求“柱状图最大矩形”,总 O(n2)。
最大直角等腰三角形(全为 .):两向 DP,自底向上、滚动一行,空间 O(n)、时间 O(n2)。

考古学家发现了一串长度为 n 的符号 s,仅由 0 和 1 组成。将 s 作为第一行;之后对于每一行,将上一行整体向右平移一位,并把最右侧的字符移到最左侧,从而得到一个 n×n 的方格表。行列编号均从 0 开始。
在方格表中,字符 0 表示可用格子,字符 1 表示不可用格子。现在要选取一个完全由可用格子组成的区域。允许的区域形状只有以下两类:
0;向左扩展表示对每个 0≤d<k,行 r+d 上从列 c−d 到列 c 的 d+1 个格子均为 0。区域面积按其中包含的 0 格子数计算,直角三角形面积为 k(k+1)/2。求所有可行区域的最大面积。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册