ZJOI2007 棋盤製作

2021-07-24 23:57:48 字數 1222 閱讀 3512

題目描述

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

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

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

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

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

【題目分析】

行列奇偶性不同,取反,然後分別單調棧找最大子矩陣。

【**】

#include 

#include

#include

#include

using namespace std;

struct nodesta[2001];

int n,m,map[2005][2005],h[2005][2005];

int top=0,max1=0,max2=0;

void solve()

// printf("\n");

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

else

}if (top&&sta[top].hi==h[i][j]) sta[top].wi++;

else}}

}int main()

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

//

// printf("\n");

solve();

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

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

map[i][j]^=1;

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

//

// printf("\n");

solve();

printf("%d\n%d\n",max1,max2);

}

ZJOI2007 棋盤製作

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

棋盤製作 ZJOI2007

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

ZJOI2007 棋盤製作

傳送門 dp找給定區域內最大符合條件的矩形 正方形。這裡有一種新的方法 懸線法。懸線的定義 每個點 i,j 都對應一條懸線,當前點是懸線的下端,懸線的上端為乙個障礙點或者矩形的上邊界。所以乙個符合條件的矩形,我們只要使用懸線法計算出這條懸線移動到不合法位置時的邊界即可。注意left和right似乎在...