餐桌 (Standard IO)
生活随笔
收集整理的這篇文章主要介紹了
餐桌 (Standard IO)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
題意/Description:
? ? ? ?你家剛買了一套新房,想邀請(qǐng)朋友回來慶祝,所以需要一個(gè)很大的舉行餐桌,餐桌能容納的人數(shù)等于餐桌的周長(zhǎng),你想買一個(gè)能容納最多人的餐桌,餐桌的邊必須跟房間的邊平行。
? ? ? ?給你的房間的設(shè)計(jì),計(jì)算最多能邀請(qǐng)的客人數(shù)。
讀入/Input:
? ? ? ?第一行包含兩個(gè)整數(shù)R和C(1<=R,C<=2000),表示房子的長(zhǎng)和寬。
? ? ? ?接下來R行每行S個(gè)字符(中間沒有空格),“.”表示空白區(qū)域,“X”表示有障礙物,餐桌所占區(qū)域必須是空白的。
輸出/Output:
? ? ? ?輸出最多能要求的客人數(shù)量。
題解/solution:
? ? ? ?找出每個(gè)空地能向上延長(zhǎng)的最高高度。然后枚舉每一個(gè)空地,讓空地向右延長(zhǎng)I個(gè)空地,隨便得出這個(gè)空地的最小高度,然后算出邊長(zhǎng)-1,得出ANS。詳情見程序。(水)
代碼/Code:
varn,m,ans:longint;f:array [0..2001,0..2001] of integer;a:array [0..2001,0..2001] of char; procedure init; vari,j:longint; beginreadln(n,m);for i:=1 to n dobeginfor j:=1 to m doread(a[i,j]);readln;end;for i:=0 to m+1 dobegina[0,i]:='X';a[n+1,i]:='X';end;for i:=0 to n+1 dobegina[i,0]:='X';a[i,m+1]:='X';end;ans:=0; end;procedure main; vari,j,x,min:longint; beginfillchar(f,sizeof(f),0);for i:=1 to n dofor j:=1 to m doif (a[i,j]='.') thenif (a[i-1,j]='X') then f[i,j]:=1else f[i,j]:=f[i-1,j]+1;for i:=1 to n dofor j:=1 to m doif a[i,j]='.' thenbeginx:=j; min:=maxlongint;while a[i,x]='.' dobeginif f[i,x]<min then min:=f[i,x];if (x-j+1+min)*2-1>ans then ans:=(x-j+1+min)*2-1;inc(x);end;end;write(ans); end;begininit;main; end.
總結(jié)
以上是生活随笔為你收集整理的餐桌 (Standard IO)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信公众帐号开发-自定义菜单的创建及菜单
- 下一篇: 移动平台端到端低成本解决方案