ZOJ1654 放置機械人

2021-08-06 02:43:18 字數 1577 閱讀 4295

時間限制: 1 sec  

記憶體限制: 256 mb

robert是一位著名的工程師。一天他的老闆給了他乙個任務。任務的背景如下:

給出一張由方塊組成的地圖。方塊有許多種:牆,草,和空地。老闆想讓robert在地圖上放置盡可能多的機械人。每個機械人拿著一把雷射槍,它可以同時向東西南北四個方向射擊。機械人必須一直呆在它開始時被放在的位置並且不斷地射擊。雷射束當然可以經過空地或草地,但不能穿過牆。機械人只能被放在空地上。當然老闆不希望看到機械人相互攻擊。換句話說,兩個機械人不能被放在一條線上(豎直或水平),除非它們中間有一堵牆。

由於你是一位機智的程式設計師和robert的好**之一,他請你幫他解決這個問題。也就是說,給出地圖的描述,計算地圖上最多能放置的機械人數量。

輸入檔案的第一行有兩個正整數m,n(1<=m,n<=50),即地圖的行數和列數。

接下來有m行,每行n個字元,這些字元是'#','*'或

'o',它們分別代表牆,草和空地。

輸出一行乙個正整數,即地圖中最多放置的機械人數目

sample 1:

4 4o***

*###

oo#o

***o

sample 2:

4 4#ooo

o#oo

oo#o

***#

sample 1:

3sample 2:

5

#include #include #include usingnamespacestd;

constintn = 2505;

inta[n][n],x;

boolvis[n];

intlink[n],head[n];

intcnt,n,m,k;

ints[n],z[n],p[n][n],t[n][n];

structedge;

edge edge[n*n];

voidinit()

voidadd(intu,intv)

booldfs(intu)}}

returnfalse;}

intmatch()

returnans;}

intmain()

if(q=='*')

a[i][j]=1;

if(q=='#')

a[i][j]=2;

}for(inti=1;i<=m;i++)

for(intj=1;j<=n;j++)

}

}for(inti=1;i<=n;i++)

for(intj=1;j<=m;j++)

}

}for(inti=1;i<=e;i++)

printf("%d\n",match());

return0;

}

放置機械人

羅伯特是一位著名的工程師 有一天,老闆給了他一項任務。該任務的背景如下 給定乙個由方塊組成的地圖。有三種塊 wall,grass和empty。他的老闆想在地圖上放置盡可能多的機械人。每個機械人都持有乙個雷射 可同時向四個方向 北,東,南,西 射擊。機械人不得不一直呆在最初放置的地方,並一直 雷射束當...

ZOJ 1654 二分匹配基礎題

題意 給你一副圖,有草地 空地 o 和牆 空地上可以放機械人,機械人向上下左右4個方向開槍 槍不能穿牆 問你在所有機械人都不相互攻擊的情況下能放的最多的機器人數。思路 這是一類經典題的衍化,如果沒有牆,我們會將行和列看成兩列點陣,然後就可以用二分匹配解。現在有牆怎麼辦呢,把某一行或列 有牆的拆分成多...

好色機械人的豔遇 機械人豔遇 《機械人的旅行》

講述機械人 路遇開房車的 剛剛開始的時候畫風很舒服,直到到了晚上上了她的床之後。畫風速變了!這個女主角聲音超好聽。整個情節實在太流氓了,太猥瑣了!連六六君這樣的老司機都看不下去了!正片在三分五十,不謝 很抱歉,此內容已經失效了!就連六六君也無法恢復了。請欣賞其他有效的內容 當您看到這條資訊的時候,很...