HYSBZ 1057 棋盤製作

2021-08-29 02:45:22 字數 1827 閱讀 9305

原題:

西洋棋是世界上最古老的博弈遊戲之一,和中國的圍棋、象棋以及日本的將棋同享盛名。據說西洋棋起源

於易經的思想,棋盤是乙個88大小的黑白相間的方陣,對應八八六十四卦,黑白對應陰陽。而我們的主人公小q,正是西洋棋的狂熱愛好者。作為乙個頂尖高手,他已不滿足於普通的棋盤與規則,於是他跟他的好朋友小w決定將棋盤擴大以適應他們的新規則。小q找到了一張由nm個正方形的格仔組成的矩形紙片,每個格仔被塗有黑白兩種顏色之一。小q想在這種紙中裁減一部分作為新棋盤,當然,他希望這個棋盤盡可能的大。不過小q還沒有決定是找乙個正方形的棋盤還是乙個矩形的棋盤(當然,不管哪種,棋盤必須都黑白相間,即相鄰的格仔不同色),所以他希望可以找到最大的正方形棋盤面積和最大的矩形棋盤面積,從而決定哪個更好一些。於是小q找到了即將參加全國資訊學競賽的你,你能幫助他麼?

input

第一行包含兩個整數n和m,分別表示矩形紙片的長和寬。接下來的n行包含乙個n * m的01矩陣,表示這張矩形

紙片的顏色(0表示白色,1表示黑色)。

output

包含兩行,每行包含乙個整數。第一行為可以找到的最大正方形棋盤的面積,第二行為可以找到的最大矩形棋

盤的面積(注意正方形和矩形是可以相交或者包含的)。

sample input

3 31 0 1

0 1 0

1 0 0

sample output46

hint

n, m ≤ 2000

題意:有乙個n行m列的格仔紙,紙上的每個格仔之間填寫這1和0,分別代表黑色和白色,現要求找乙個面積最大的正方形和矩形,要求矩形和正方形內部格仔黑白相間,輸出滿足題意的正方形和矩形的最大面積。

題解:這道題可以用懸線法:

這種方法也是我初次見到,大體思路就是如果要求最大矩陣(最大長方形,正方形之類的),先求出每乙個點的符合題意的左右邊界。之後再向上爬公升,如果向上的那個元素也滿足題意,則此點的左右邊界取較小的乙個。(就相當於乙個桶能裝多少水取決與最短板)

下面是具體遞迴公式:

left[i][j]=max(left[i][j],left[i-1][j]);

right[i][j]=min(right[i][j],right[i-1][j]);

up[i][j]=up[i-1][j];

更多細節見**,讀者細細體會。

附上ac**:

#include #include using namespace std;

int n,m,st[2005][2005],res1,res2;

int l[2005][2005],r[2005][2005],up[2005][2005];

int main()

for(int i=1;i<=n;i++)

for(int j=2;j<=m;j++)//注意j=2,否則j-1可能為0。另:因為要向左擴充套件所有j要從小向大遍歷

for(int i=1;i<=n;i++)

for(int j=m-1;j>=1;j--)//同上,要向右擴充套件所以j要從大到小遍歷

res1=1;

res2=1;//初始化正方形res1和矩形res2

for(int i=1;i<=n;i++)

for(int j=1;j<=m;j++)

int jl=r[i][j]-l[i][j]+1;//左右邊界之差

int il=min(jl,up[i][j]);//再爬公升距離與左右邊界之差之間取較小值作為正方形的邊長

res1=max(res1,il*il);//正方形面積

res2=max(res2,jl*up[i][j]);//長方形面積

}cout

}

BZOJ 1057 棋盤製作

bzoj 1057 傳送門 一道求最大子矩陣的裸題 一般求最大子矩陣的方法為單調棧 bzoj 3039 玉蟾宮 垂線法 兩者的思想其實完全相同,不過以前沒寫過垂線法,這次來練一練 垂線法要記錄3個狀態 h i j 記錄當前點能向上合法走的步數 l i j 記錄高為 h i j 的線最多能左移到 同理...

1057 ZJOI2007 棋盤製作

題目鏈結 題目大意 求最大的黑白相間子矩陣 子正方形大小 題解 進行乙個非常巧妙的條件轉換 將i j為奇數的格仔顏色反轉,這樣就變成求黑色最大子矩陣和白色最大子矩陣取max了,最大子正方形顯然是最大子矩陣的一部分 當然不轉化也是隨便做的 逃 時間複雜度o mn 我的收穫 懸線法勁 include i...

1057 ZJOI2007 棋盤製作

西洋棋是世界上最古老的博弈遊戲之一,和中國的圍棋 象棋以及日本的將棋同享盛名。據說西洋棋起源 於易經的思想,棋盤是乙個8 8大小的黑白相間的方陣,對應八八六十四卦,黑白對應陰陽。而我們的主人公小q,正是西洋棋的狂熱愛好者。作為乙個頂尖高手,他已不滿足於普通的棋盤與規則,於是他跟他的好朋友小w決定 將...