餐桌 紀中 1237 水 數學

2021-07-14 18:21:27 字數 1637 閱讀 6642

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為先手...