ZJOI2007 棋盤製作 解題報告

2021-08-28 10:56:34 字數 2522 閱讀 4112

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

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

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

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

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

輸入格式:

包含兩個整數nn和mm,分別表示矩形紙片的長和寬。接下來的nn行包含乙個n \ \times mn ×m的0101矩陣,表示這張矩形紙片的顏色(00表示白色,11表示黑色)。

輸出格式:

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

input

3 3

1 0 1

0 1 0

1 0 0

output
4

6

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

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

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

這是一道可以用懸線法解決的一道題。

安利一波其他關於懸線法的部落格(如果你了解,那就不用去看了):

[scoi2005]最大子矩陣 解題報告

設l[i]j,r[i][j]分別代表可以向左,向右擴充套件的最大的座標。

而h[i][j]代表可以向上拓展的最大距離。

然後就可以啦!!

#include

using

namespace std;

#define maxn 2005

int n,m;

int a[maxn]

[maxn]

;int l[maxn]

[maxn]

,r[maxn]

[maxn]

,up[maxn]

[maxn]

;int ans1,ans2;

intmain()

for(

int i=

1;i<=n;i++

)for

(int j=

2;j<=m;j++)if

(a[i]

[j]!=a[i]

[j-1])

l[i]

[j]=l[i]

[j-1];

for(

int i=

1;i<=n;i++

)for

(int j=m-

1;j>=

1;j--)if

(a[i]

[j]!=a[i]

[j+1])

r[i]

[j]=r[i]

[j+1];

for(

int i=

1;i<=n;i++

)for

(int j=

1;j<=m;j++

)int a=r[i]

[j]-l[i]

[j]+1;

int b=

min(a,up[i]

[j])

; ans1=

max(ans1,b*b)

; ans2=

max(ans2,a*up[i]

[j]);}

printf

("%d\n%d\n"

,ans1,ans2)

;return0;

}

如果學有餘力的話

可以對比一下這兩題的懸線法的l,r陣列的轉移過程有何不同。

【洛谷】p4147 玉蟾宮 解題報告

不難發現:

玉蟾宮那道題要多開個l,r陣列是因為在轉移的過程中,如果直接改變l[i][j],r[i][j]的話可能會影響到不選上一行的情況,所以就額外的開乙個陣列。而而這一題,則不用擔心,因為就算它的值被上一行給覆蓋了,它也會被這一行的其他值給更新到!

舉個栗子來看吧。

栗子:4 6

0 1 1 1 0 1

1 0 1 1 1 0

0 1 0 1 0 1

1 0 1 0 1 0

最大矩陣是下面兩行

如圖,資料中黃色的部分已經被上一行「汙染」,但是,還有乙個值是沒有變的啊(那個『1』)!!所以這樣行的結果一定不會被上一行影響!!

(也許是這樣的吧)

ZJOI2007 棋盤製作

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

ZJOI2007 棋盤製作

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

棋盤製作 ZJOI2007

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