problem description
小晴天非常漂亮的後花園,打算以後退休之後在裡面種種花,養養草,所以現在小晴天打算為他的後花園圍上柵欄。
小晴天的後花園可以看成是乙個m*n的矩形,但是其中有一些地方種了樹,這些地方都不能安裝柵欄,現在小晴天把後花園的平面圖告訴你了,請你幫忙設計乙個最大的矩形柵欄。
input
單組資料,第一行包括兩個整數m,n(1<=m,n<=500),接下來m行,每行包括n個字元,僅由'x'和'.'組成(ascii碼分別是120與46).
其中『x』表示這個方格有樹木,『.』表示這個點可以建造柵欄
output
若可以圍成乙個閉合柵欄,輸出乙個整數,表示柵欄能打到的最大周長
否則輸出impossible
sample input
4 5.....
.x.x.
.....
.....
2 2.x
x.2 5
.....
***x.
sample output
14impossible
impossible
hint
樣例一可以繞著整個圖一圈,周長為2*(4+3)=14
樣例二與三因為有樹木的存在,不能建造乙個閉合的柵欄。
本題為單檔案讀寫,樣例包括三個檔案
這道題深搜還是很明顯的,但有一點要注意,不能每一步都遞迴,否則會爆棧,只需要在碰到鏡子轉彎的時候遞迴就行了。
ac**:
// created by cquwel
#include #include #include #include #include #include #include #include #include #include #include #include #include #define inf 0x3f3f3f3f
#define cir(i,a,b) for (int i=a;i<=b;i++)
#define cir(j,a,b) for (int j=a;j>=b;j--)
#define clr(x) memset(x,0,sizeof(x))
typedef long long ll;
using namespace std;
int n,m;
int ans,temp;
char g[1010][1010];
int vis[1010][1010];
int dir[4][2]=;
int mmax(int a, int b)
void dfs(int dx,int dy,int px,int py)
if (g[tx][ty]=='/' && dx==1)
if (g[tx][ty]=='/' && dx==-1)
if (g[tx][ty]=='/' && dy==1)
if (g[tx][ty]=='/' && dy==-1)
if (g[tx][ty]=='\\' && dx==1)
if (g[tx][ty]=='\\' && dx==-1)
if (g[tx][ty]=='\\' && dy==1)
if (g[tx][ty]=='\\' && dy==-1)
}ans=mmax(ans,temp);
}int main()
}// getchar();
} for (int i=0;i<4;i++)
cout << ans << endl;
return 0;
}
ACM學習感悟 暴力專場E 暴力dp
problem description 小晴天 我有乙個數列!小晴天 我還要有很多很多的數列!於是小晴天就把這個數列的所有連續子數列寫出來。然後小晴天把每個連續子數列中的最大的數寫出來。那麼,有多少個比k大呢?input 多組資料,首先是乙個正整數t t 100 表示資料的組數 對於每組資料,首先是...
ACM交流賽感悟
a題很水,字串匹配,提交好幾次都沒通過,後來老何提醒後,發現題意理解錯了,改過來之後,還是沒過 在敲 之前,一定要三個人統一一下思路,思路一樣的話,開敲 f題是簡單題,不過也提交了多次才過,這個是多組資料,題目說是一組測試資料,其實是多組測試資料 這個還有情可原 e題是最簡單的題,跟a b乙個性質,...
關於ACM比賽的感悟
忙活了乙個月,終於比賽完了!不知不覺,已經參加兩次acm的比賽了,雖然有些打醬油的感覺!結果其實已經是在預料中了,但我依然享受了訓練的過程。乙個月過得真的是很讓人困惑,有時候,乙個演算法可以連續糾結三天而對它沒有任何的感覺。有時候,別人的一種實現讓我有種想 的感覺。我掛在嘴邊最多的一句話就是 想出那...