description
你家剛買了一套新房,想邀請朋友回來慶祝,所以需要乙個很大的舉行餐桌,餐桌能容納的人數等於餐桌的周長,你想買乙個能容納最多人的餐桌,餐桌的邊必須跟房間的邊平行。
給你的房間的設計,計算最多能邀請的客人數。
input
第一行包含兩個整數r和c(1<=r,c<=2000),表示房子的長和寬。
接下來r行每行s個字元(中間沒有空格),「.」表示空白區域,「x」表示有障礙物,餐桌所佔區域必須是空白的。
output
輸出最多能要求的客人數量。分析
1.桌子一定是矩形
(生活經驗)
2.請自行理解(反正我看了水解後一秒理解),很水的。
3.元宵*1 想出的水解(我就是理解他的)——
^(* ̄(oo) ̄)^ **
var
f:array[0..2010,0..2010] of longint;
a:array[0..2010,0..2010] of boolean;
n,m,ans:longint;
i,j,k:longint;
c:char;
procedure main;
var i,j,x,min:longint;
begin
fillchar(f,sizeof(f),0);
for i:=1 to n do
for j:=1 to m do
if a[i,j]
then
if not a[i-1,j]
then f[i,j]:=1
else f[i,j]:=f[i-1,j]+1;
for i:=1 to n do
for j:=1 to m do
if a[i,j] then
begin
x:=j;
min:=maxlongint;
while a[i,x] do
begin
if f[i,x]then min:=f[i,x];
if ans<(x-j+1)*2+min*2
then ans:=(x-j+1)*2+min*2;
x:=x+1;
end;
end;
end;
begin
readln(n,m);
ans:=0;
for i:=1 to n do
begin
for j:=1 to m do
begin
read(c);
if c='.'
then a[i,j]:=true
else a[i,j]:=false;
end;
readln;
end;
for i:=0 to m+1 do
begin
a[0,i]:=false;
a[n+1,i]:=false;
end;
for i:=0 to n+1 do
begin
a[i,0]:=false;
a[i,m+1]:=false;
end;
main;
writeln(ans-1);
end.
洪水 紀中1235 bfs 水
題目大意 一天,乙個畫家在森林裡寫生,突然爆發了山洪,他需要盡快返回住所中,那裡是安全的。森林的地圖由r行c列組成,空白區域用點 表示,洪水的區域用 表示,而岩石用 x 表示,另畫家的住所用 d 表示,畫家用 s 表示。有以下幾點需要說明 1 每一分鐘畫家能向四個方向移動一格 上 下 左 右 2 每...
地鐵建設 紀中2568 水dp
某地鐵沿線共設n站,可分為u 地面式 d 地下式 和c 複合式 三種型別。為避免單調,相鄰地鐵站的型別不能重複。同時,由於地鐵站所處環境和地質條件有所差異,每個站點按不同型別的建設成本也不盡相同。現給定各站點的三種建設成本,請計算出該地鐵線的最低總造價。輸入檔案subway.in包含n 1行 第1行...
(紀中)2155 num 數學
file io input num.in output num.out 時間限制 1000 ms 空間限制 262144 kb 具體限制 goto problemset 題目描述 k ckc kc邀請他的兩個小弟k kk和c cc玩起了數字遊戲。遊戲是k kk和c cc輪流操作進行的,k kk為先手...