題目描述
給你乙個n×m的矩形,要你找乙個子矩形,價值為左上角左下角右上角右下角這四個數的最小值,要你最大化矩形的價值。
輸入第一行兩個數n,m,接下來n行每行m個數,用來描述矩形
n, m ≤ 1000
輸出輸出乙個數表示答案
樣例輸入
2 21 2
3 4樣例輸出1題解
二分+暴力
首先題目問的是最小值最大,顯然二分答案,問題轉化為判斷是否存在乙個子矩形,滿足四個角的權值大於等於mid。
考慮暴力怎麼做:列舉所有與x軸平行的線段(即同行的線段),判斷是否有兩個線段的端點橫座標相同(即列數相同)。
由於只要有任何一種線段出現次數大於等於2即可行,因此最壞情況下每一種線段也只出現了一次。
因為線段只有 $m^2$ 個,所以只需要使用嚴格的複雜度把所有線段暴力找出來即可。這樣最壞情況下時間複雜度不會超過 $o(nm+m^2)$
因此總的時間複雜度為 $o((n+m)^2\log n)$
#include #include #include #define n 1010using namespace std;
int n , m , a[n][n] , c[n][n] , v[n] , tot;
bool solve(int mid)}}
return 0;
}int main()
printf("%d\n" , ans);
return 0;
}
bzoj5085 最大 二分 bitset
給你乙個n m的矩形,要你找乙個子矩形,價值為左上角左下角右上角右下角這四個數的最小值,要你最大化矩形 的價值。第一行兩個數n,m,接下來n行每行m個數,用來描述矩形 n,m 1000 題目的意思是1 1的矩陣不算子矩陣。最小值最大嘛,二分答案嘛。我們把 mid的位置記為1,mid的位置記為0,顯然...
BZOJ5085 最大 亂搞
description 給你乙個n m的矩形,要你找乙個子矩形,價值為左上角左下角右上角右下角這四個數的最小值,要你最大化矩形的價值。sample input 2 21 2 3 4sample output 1bitset 好 n 3信仰ac include include include incl...
bzoj 5085 最大 結論題qwq
給你乙個n m的矩形,要你找乙個子矩形,價值為左上角左下角右上角右下角這四個數的最小值,要你最大化矩形 的價值。第一行兩個數n,m,接下來n行每行m個數,用來描述矩形 n,m 1000 輸出乙個數表示答案 2 21 2 3 41 這道題ljk猜了個結論 答案一定在那最大的4 n個點中 所以用一下st...