越野滑雪(skiing)

2021-09-26 05:18:33 字數 2068 閱讀 8738

鄉村越野滑雪比賽在乙個m×n(1<=m,n<=500)的二維**中進行,每個格仔的海拔在[0,1000000000]之間。滑雪者可以從乙個格仔滑到相鄰格仔,(可以從高處滑到低處,也可以從低處滑到高處),兩者之間的海拔差的絕對值為其難度值。相鄰的格仔是指有公共邊的格仔。一條路徑的難度值是指該路徑上途經相鄰兩格仔的難度值的最大值。現在給出若干個關鍵格仔,求所有這些關鍵格仔相互可達的最小的難度值。

第一行包含兩個整數m、n。

接下來m行,每行包含n個海拔值。

再接下來m行,每行n個數,為1則表示該格仔為關鍵格仔。

輸出格式:

乙個數,表示關鍵格仔相互可達的最小的難度值。

3 520 21 18 99 5

19 22 20 16 26

18 17 40 60 80

1 0 0 0 1

0 0 0 0 0

0 0 0 0 1

std是用的最小生成樹

將格仔看做點,將相鄰的格仔之間的難度係數看做邊權,得到乙個無向圖。

然後求包含給出的關鍵點的最小生成樹.此處的最小生成樹不是對邊求和,而是找邊的最大值。

對每個連通塊記錄其中包含的關鍵點的個數。當某個連通塊包含的關鍵點數等於最大值了,那麼此時就可以退出程式了。

但是!!!

生成樹什麼的完全沒有必要!!!

我們可以直接從乙個關鍵點出發,bfs求它到每個點的最短(最小難度值)路徑,再輸出它們的最大值。

其它點間的的路徑?no need!!!

若有3個關鍵點a,b,c,其中a到b、c的路徑難度值最小分別為x、y

而b->c的可由b->a再a->c,

該線路的最大難度值為max(x,y)

那麼b到c的最小難度值一定不會超過x、y的最大值

bfs還蠻好寫的,就不再詳述了

ps:考試的時候大概想了10分鐘,花20分鐘寫了個大概框架

新增變數,輸入樣例資料,準備除錯

***樣例居然就過了???

膽戰心驚地檢查了半天,果然有問題

難度最大值沒有入隊

那我tm是怎麼過的???

唉交吧交吧

爆零…果然還是有問題

提交至網上測評,執行錯誤

唉慢著這記憶體不對呀 難道陣列開大了

重新提交

ac……

媽的最後附上醜陋的**

#include

#include

#define maxp 501

#define maxn 5000001

using namespace std;

int n,m,x1,y1,z1,x2,y2,z2;

int map[maxp]

[maxp]

;int dp[maxp]

[maxp]

;int que[maxn][3

],head,tail;

int key[maxp*maxp][2

],k,ans;

intzheng

(int a)

intmain()

for(

int i=

1;i<=m;i++

)for

(int j=

1;j<=n;j++)}

que[tail][0

]=key[0]

[0];

que[tail][1

]=key[0]

[1];

tail++

;while

(head!=tail)

} x2-=2

;if(x2>0)

} x2++

; y2++;if

(y2<=n)

} y2-=2

;if(y2>0)

} head++;}

for(

int i=

1;i<=k;i++

) cout<}

動態規劃 skiing

動態規劃 skiing 時間限制 1 sec 記憶體限制 128 mb 提交 34 解決 15 提交 狀態 討論版 第一行表示有幾組測試資料,輸入的第二行表示區域的行數r和列數c 1 r,c 100 下面是r行,每行有c個整數,代表高度h,0 h 10000。後面是下一組資料 輸出最長區域的長度。1...

越野車分類

輕型越野車 豐田bj2,北京212。微型越野車 鈴木jimny 三菱帕傑羅mini 大發特銳。小型城市suv 帕傑羅io 鈴木威特拉 現代途勝 本田crv 路虎神行者。中型越野車 三菱帕傑羅 豐田普拉多 現代特拉卡 長城 哈佛 帕拉丁。大型越野車 豐田陸地巡洋艦 悍馬 吉普大切 賓士g fj酷路澤 ...

用藝術玩轉越野

攬勝極光的設計師芮哲勳曾說 我不是大家通常說的汽車設計師,我想我應該是個創意師 而正在這個暖春,他用實際行動證明了他的話。他的概念設計,無處不震撼著人的心靈,讓人的心處在澎湃的狀態。除了結構,在顏色上面也衝擊著人們的視覺。論是恬靜的羅亞爾河藍,還是張揚的桑給巴爾棕金,11種外觀顏色演繹著各自的風格,...