CQBZOJ 避開怪獸

2022-09-19 07:03:14 字數 1322 閱讀 7531

題目描述

給出乙個n行m列的地圖,地圖形成乙個有n*m個格仔的矩陣。地圖中的空地用』.』表示。其中某些格仔有怪獸,用』+』表示。某人要從起點格仔』v』走到終點格仔』j』,他可以向上、下、左、右四個方向行走。因此,起點和終點之間可以有許多條路徑。注意:即使是有怪獸的格仔,他也可以走上去。 設路徑上某個格仔的座標為(r,c),某個怪獸的座標為(a,b),那麼它們之間的曼哈頓距離定義為:|r-a| + |c-b| 顯然,地圖上可能有許多怪獸,路徑上也可能途經許多格仔,每個格仔到每個怪獸都可以算出之間的曼哈頓距離。 問整條路徑中離怪獸的曼哈頓距離最小值最大為多少?

輸入 輸入格式: 第1行:2個整數n和m(1 ≤ n, m ≤ 500) 接下來n行,每行m個字元,可能是』.』, 『+』, 『v』, 『j』等. 資料保證僅包含1個』v』 和1個 『j』 ,至少有1個』+』

輸出 輸出格式: 第1行:1個整數,表示最短曼哈頓距離的最大值

樣例輸入

輸入樣例1:

4 4

+… ….

…. v..j

輸入樣例2

4 5

…..

.+++.

.+.+.

v+.j+

樣例輸出

輸出樣例一:

3

輸出樣例二:

0一開始yy到了很多方法:

強行求出每個點到最近怪獸的曼哈頓距離,pass

bfs一波,pass

…………

左撞右撞,終於想到了乙個正常的解法——二分答案

二分離怪獸的最短曼哈頓距離,將每個怪獸周圍曼哈頓距離等於其的,標記一下,用bfs驗證起點終點是否聯通,來實現放縮

算了一下時間複雜度,o(

n2lo

g(2n

))如果全屏怪獸,這種方法很危險,但沒辦法,資料好水哦,美滋滋~~~

**如下:

#include

#include

#include

#include

using

namespace

std;

struct nodemst[250001];

int m,n;

intmap[501][501];

int sx,sy,ex,ey,cnt;

int u[4]=,z[4]=;

void getmap()

}}void work(int mhd)

}bool bfs()

}return0;}

int main()

printf("%d",l);

}

奧特曼打小怪獸

由於奧特曼和小怪獸有相同的屬性,我把他們化成乙個類,怪物。通過這個類的呼叫,可以實現奧特曼與小怪獸的打鬥。package com.lovo 這是寫的奧特曼和小怪獸的共同類,由於他們共有相同的屬性,行為,所以歸為一類。author 杜海 public class guaiwu public void ...

小李打怪獸

小李對故鄉的思念全部化作了對霧霾天氣的怨念,這引起了掌控霧霾的邪神的極大不滿,邪神派去了乙隻小怪獸去對付小李,由於這只怪獸擁有極高的iq,它覺得直接消滅小李太沒有難度了,它決定要和小李在智力水平上一較高下。我們可否幫助小李來戰勝強大的怪獸呢?問題是這樣的 給定一堆正整數,要求你分成兩堆,兩堆數的和分...

CG MB 賓士怪獸

賓士 1 增加 obd 里程修復功能。目前支援儀表型別 c w204 glk x204 clk 207 e w212 sls 197 cls w218 r class w251 gl x164 ml w164 e class w211 cls w219 s class w221 cl 216 c c...