從前有乙隻可愛的小浣熊居住在美麗的森林裡。他聽說小鸚鵡要旅行到另乙隻鸚鵡家做客,也想邀請朋友們來自己家。為此,小浣熊想建一棟新房子。他找到了一塊比較大的平地,不過這塊地上還是有一些地方不能建屋。不妨把這塊空地看作是由n行m列等大小的正方形格仔組成。現在,小熊已經把不能建房子的地方都標記了出來,他想找出一塊長方形的空地來建造,同時,他希望這塊地的面積最大。你能幫助他麼?
輸入第一行依次包含兩個正整數n和m。
下面n行每行有m個空格隔開的數,分別描述了整塊地的每乙個方格的情況。每個數非0即1,若為1表示該格可以被選擇,0表示該格有障礙而不能用。
輸出僅一行乙個整數,為最大能夠找到的長方形的面積。
5 51 1 1 1 1
1 0 0 1 1
0 1 1 1 1
0 1 1 0 1
1 1 1 1 1
6對於50%的資料,有1 ≤ n,m ≤ 10
對於100%的資料,有1 ≤ n,m ≤ 50
思路:一開始沒做出來= =!後來看了隊裡另外乙個人的**才茅塞頓開,還有這種操作!
首先預處理矩形(處理方式見**)
處理完畢後,樣例應為:
2 0 1 3 5
1 0 0 2 4
0 3 3 1 3
0 2 2 0 2
1 1 1 1 1
後列舉每個b[i][j],再列舉k,j<=k<=m,去b[i][j]與b[i][k]中最小值,為長,寬為k-j+1,相乘則是矩形面積。
#include using namespace std;int main()
; int b[55][55]=;
cin>>n>>m;
int i,j;
for(i=1;i<=n;i++)
}for(j=1;j<=m;j++)
for(i=n-1;i>0;i--)
else}}
int ans=0;
for(i=1;i<=n;i++)}}
cout
}
訓練 9 13 訓練賽
a.hdu 6230 乙個合法的子串 s 3n 2 滿足條件即1 2n 1 為以n為回文中心的回文串,n 3n 2為以2n 1為中心的回文串。故我們可以通過尋找回文中心對,來判斷相應合法子串的個數。利用manacher求出每個位置的最長回文半徑,則若i,j滿足條件 i j 則應有 p i geqsl...
訓練賽 詠歎
安師大附中訓練題目 給定乙個1到n的排列a,對其進行氣泡排序 counter 0 while a不是公升序的 counter counter 1 for i 1 to n 1 if a i a i 1 then swap a i a i 1 endifend forend while那麼經過幾輪排序...
訓練賽補題
codeforces 1041b 思考 1 求最大公約數的時候除法比減法要快,以後能用除法去處理大數就不要用劍法去處理大數 codeforces 1041c 題意 其實就是給定了n個數,問間隔最少d,那麼這樣最少是幾組,並且哪個是哪一組的 思路 就是直接進行比較,先進行按照數值進行從小到大排序,如果...