ACM學習感悟 暴力專場B(dfs)

2021-07-01 21:57:20 字數 1861 閱讀 1006

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

14

impossible

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的比賽了,雖然有些打醬油的感覺!結果其實已經是在預料中了,但我依然享受了訓練的過程。乙個月過得真的是很讓人困惑,有時候,乙個演算法可以連續糾結三天而對它沒有任何的感覺。有時候,別人的一種實現讓我有種想 的感覺。我掛在嘴邊最多的一句話就是 想出那...