zzuoj 10445 魔法花園 思維

2021-07-11 02:26:23 字數 1808 閱讀 7901

10445: 魔法花園

time limit: 2 sec memory limit: 128 mb

submit: 55 solved: 18

[submit][status][web board]

description

身為魔法少女的一員,學姐(頭還在哦)在最後一戰之後便退隱了。她決定用她剩餘的魔法去圈一塊矩形花園。但是有一些土地會使學姐的魔法失效(即邊不可以跨越這些土地)。現在學姐想知道在這塊n*m的土地上她可以獲得的最大花園面積。(單位格面積為1).在這塊n*m的圖中,」.」表示學姐可以施法,」x」表示會失效。(1<=n,m<=200)。

input

輸入為多組樣例,第一行為n和m,下面n*m描述這個土地。

output

輸出多行,每行為麻美學姐可以獲得的最大花園面積。

sample input

5 6

…… ..x..x

x..x..

…… ..x…

sample output

16hint

如上樣例,假設麻美學姐的魔法為f,那麼她圈地的方式是

.ffff.

.fx.fx

xf.xf.

.ffff.

..x…

思路:預處理每一行、列』.』字元的個數,顯然當sum[r] - sum[l-1] = r - l + 1時說明不存在』x』。我們枚舉行,然後從左到右推進列,記第乙個合法列為左邊界l,繼續向右推進,若存在行不合法則初始化左邊界l,反之若列合法更新右邊界r,在這個過程中維護最大矩形。

ac**:

#include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define fi first

#define se second

#define ll o<<1

#define rr o<<1|1

#define clr(a, b) memset(a, (b), sizeof(a))

using

namespace

std;

typedef

long

long ll;

typedef pair pii;

const

int mod = 1e9 + 7;

const

int maxn = 100;

const

int inf = 1e9 + 10;

void add(ll &x, ll y)

char str[210];

int cul[210][210], row[210][210];

bool jrow(int l, int r, int k)

bool jcul(int l, int r, int k)

int main()

else

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

else }}

int ans = 0;

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

}else

else

if(jcul(i, j, k)) }}

if(l != -1) }}

printf("%d\n", ans);

}return

0;}

zzuoj 10406 A 挑戰密室

time limit 1 sec memory limit 128 mb submit 5 solved 2 submit status web board r組織的 dr.kong 為了尋找丟失的超體元素,不幸陷入 wto密室。dr.kong 必須盡快找到解鎖密碼逃離,否則幾分鐘之後,wto密室即...

ZZUOJ 10508 樹狀陣列

給定乙個序列,長度為n,每次詢問為一組區間 li,ri 輸出li到ri中出現恰好兩次的不同數的個數.先對a離散化一下,當然也可以不離散化,用map也行。離線做,按右端點排序,從1遍歷到n,更新樹狀陣列和ans 對於a陣列,我們記錄上乙個和a i 相等的位置last i 更新樹狀陣列不太好想,具體看 ...

1044 火星數字

火星人是以13進製計數的 例如地球人的數字 29 翻譯成火星文就是 hel mar 而火星文 elo nov 對應地球數字 115 為了方便交流,請你編寫程式實現地球和火星數字之間的互譯。輸入格式 輸入第一行給出乙個正整數n 100 隨後n行,每行給出乙個 0,169 區間內的數字 或者是地球文,或...