题意求01矩阵第二大1矩阵的面积
真实被教育,求二大的题一般都很贱,求一大的值完全就是板子题,随便上网找找就行我这说说二大的要点。
首先错误的地方就是单调栈进去的都是当前最优的结果,所以我们会有一个hack的数据
1 4
1 1 1 1
答案显然是3但是我们会得到0…因为我们记录的都是当前最优最大的面积的矩形….
解决方法多加入一些长减一或者宽减一之类的矩形
然后就是寻找的时候好多bug,复杂的实现我就不说了,简易的实现就是把第一大面积第二大面积算出来然后再单调栈遍历一遍这个地方因为我们的复杂度大约n^2 1e6多点常数无所谓然后就是看看不重复的矩形的最大的面积是否会有多于一个等于最大值的有就直接输出最大值否则输出二大值即可.
矩形判重直接用左上角右下角坐标或者是i*m+j之类的判别
代码
1 |
|