ZJOI2007 棋盤製作

2022-05-08 04:12:12 字數 1964 閱讀 5290

西洋棋是世界上最古老的博弈遊戲之一,和中國的圍棋、象棋以及日本的將棋同享盛名。據說西洋棋起源於易經的思想,棋盤是乙個8*8大小的黑白相間的方陣,對應八八六十四卦,黑白對應陰陽。

而我們的主人公小q,正是西洋棋的狂熱愛好者。作為乙個頂尖高手,他已不滿足於普通的棋盤與規則,於是他跟他的好朋友小w決定將棋盤擴大以適應他們的新規則。

小q找到了一張由n*m個正方形的格仔組成的矩形紙片,每個格仔被塗有黑白兩種顏色之一。小q想在這種紙中裁減一部分作為新棋盤,當然,他希望這個棋盤盡可能的大。

不過小q還沒有決定是找乙個正方形的棋盤還是乙個矩形的棋盤(當然,不管哪種,棋盤必須都黑白相間,即相鄰的格仔不同色),所以他希望可以找到最大的正方形棋盤面積和最大的矩形棋盤面積,從而決定哪個更好一些。

於是小q找到了即將參加全國資訊學競賽的你,你能幫助他麼?

輸入格式:

包含兩個整數n和m,分別表示矩形紙片的長和寬。接下來的n行包含乙個n * m的01矩陣,表示這張矩形紙片的顏色(0表示白色,1表示黑色)。

輸出格式:

包含兩行,每行包含乙個整數。第一行為可以找到的最大正方形棋盤的面積,第二行為可以找到的最大矩形棋盤的面積(注意正方形和矩形是可以相交或者包含的)。

輸入樣例#1:

3 3

1 0 1

0 1 0

1 0 0

輸出樣例#1:

4

6

對於20%的資料,n, m ≤ 80

對於40%的資料,n, m ≤ 400

對於100%的資料,n, m ≤ 2000

先把偶數行和偶數列的值全部異或

1,那麼問題就求值相同的最大的正方形和矩形

.

求正方形

:

f[i][j]

為以i,j

結尾的最大的正方形的邊長

.

那麼當

mp[i][j]==mp[i-1][j]==mp[i][j-1]==mp[i-1][j-1]

時可以更新答案

.f[i][j]=min(f[i-1][j],f[i][j-1],f[i-1][j-1])+1.

求矩形

:

先預處理出

up[i][j]

代表這個點往上的最大的相同序列的長度

,down[i][j]

為往下的

.

列舉每行

.在每行中,維護

las代表與當前列相同的最遠的地方在**

,u代表當前的往上的長度

,當前的往下的長度

,那麼每次更新答案

ans=max(ans,(u+v-1)*(j-las)).

若碰到了顏色不同的重新賦值

.

複雜度

o(n^2).

1 #include2

#define maxn 2010

3using

namespace

std;

4int

mp[maxn][maxn];

5int

f[maxn][maxn],n,m,up[maxn][maxn],down[maxn][maxn];

6 inline void

work1()

20 inline void

work2()

31int ans=0;32

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

39 ans=max(ans,(m+1-las)*(v+u-1

));40

}41 printf("

%d\n

",ans);42}

43int

main()

51work1();

52work2();

53return0;

54 }

ZJOI2007 棋盤製作

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

ZJOI2007 棋盤製作

十二年前的zjoi我現在還切不過我是不是可以退役了 傳送門 西洋棋是世界上最古老的博弈遊戲之一,和中國的圍棋 象棋以及日本的將棋同享盛名。據說西洋棋起源於易經的思想,棋盤是乙個8 times 88 8大小的黑白相間的方陣,對應八八六十四卦,黑白對應陰陽。而我們的主人公小q,正是西洋棋的狂熱愛好者。作...

棋盤製作 ZJOI2007

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