傳送門
歷史遺留問題,直到現在才來學這玩意…
考慮每個點能往上最多延伸up[
i][j
]up[i][j]
up[i][
j]個格仔,把延申的豎線叫做懸線
把這根懸線左移移動可以得到最大的長,那麼長乘寬就是這根懸線能得到的最大長度
把所有懸線能得到的最大矩陣算出來就是答案了
那麼預處理l[i
][j]
,r[i
][j]
l[i][j],r[i][j]
l[i][j
],r[
i][j
]分別表示往左/右延伸能得到的最大距離
然後當上下都無障礙時,說明這跟懸線需要同時受到上下的限制
if
( i>=
2&&a[i-1]
[j]&&a[i]
[j])
完整**非常簡單了
#include
using
namespace std;
const
int maxn =
1009
;int a[maxn]
[maxn]
,l[maxn]
[maxn]
,r[maxn]
[maxn]
,up[maxn]
[maxn]
,n,m;
intmain()
for(
int i=
1;i<=n;i++
)int ans =0;
for(
int i=
1;i<=n;i++
)for
(int j=
1;j<=m;j++
) ans =
max( ans,
(r[i]
[j]+l[i]
[j]-1)
*up[i]
[j]);}
cout << ans*3;
}
P4147 玉蟾宮 懸線法求最大子矩陣
p4147 玉蟾宮 懸線法,l r up 分別表示 i,j 這個點向左,右,上能到達的遠點。然後面積就很好辦了。具體實現見 然而,還有更優秀的演算法,可是我還沒學會嚶嚶嚶,可以看看這題 p1578 奶牛浴場 includeusing namespace std const int n 1005 in...
玉蟾宮 洛谷P4147
題目描述 有一天,小貓rainbow和freda來到了湘西張家界的天門山玉蟾宮,玉蟾宮宮主藍兔盛情地款待了它們,並賜予它們一片土地。這片土地被分成nm個格仔,每個格仔裡寫著 r 或者 f r代表這塊土地被賜予了rainbow,f代表這塊土地被賜予了freda。現在freda要在這裡賣萌。它要找一塊矩...
P4147 玉蟾宮 單調棧
有一天,小貓rainbow和freda來到了湘西張家界的天門山玉蟾宮,玉蟾宮宮主藍兔盛情地款待了它們,並賜予它們一片土地。這片土地被分成n m個格仔,每個格仔裡寫著 r 或者 f r代表這塊土地被賜予了rainbow,f代表這塊土地被賜予了freda。現在freda要在這裡賣萌。它要找一塊矩形土地,...