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 區間內的數字 或者是地球文,或...