一道单调栈的好题啊...... 思路是很奇妙的,对于每个点(i,j),我们可以算它对答案的贡献(即包含它的矩形数量),包含该点的矩形,点的高度为h[j],点右边的高度一定大于等于h[j],左边的高度一定大于h[j]. 高有h[j]种方案,底边有(j - lj) * (rj - j)种方案,相乘就是该点对答案的贡献. 具体步骤: 1.定义 h[j] 为当前行第 j 列可向上延伸多少(如果当前块被图画那么值为0)2.使用单调栈算出 li 和 ri ,分别是 j中左边第一个(从 j 开始)不大于…