蒜頭君救人

2022-07-15 14:21:22 字數 756 閱讀 5308

問題:

蒜頭君是乙個樂於助人的好孩子,這天他所在的鄉村發生了洪水,有多名村民被困於孤島上,於是蒜頭君決定去揹他們離開困境,假設蒜頭君所在的村子是 n×mn×m 的網格,網格中.號代表平地,#號代表該地已被洪水淹沒,a、b……等大寫字母表示該地有村民被困,s代表蒜頭君的起點,t代表蒜頭君的終點。

蒜頭君的初始速度為 k 秒一格,他每次可以向上下左右 4 個方向中的乙個移動 1 格。在背上乙個村民後,他的速度可能會降低,也可能會加快,但他的速度不能快於 1 秒每格,那麼蒜頭君想知道,他最快需要多長時間將所有村民救出?

注意:不能在終點以外的地方放下村民;可以同時背多個村民。

第一行 3 個正整數 n,m(1≤n,m≤10),kn,m(1≤n,m≤10),k,分別表示村莊長度、寬度、蒜頭君初始速度。

接下來 nn行,每行乙個長度為mm的字串,表示村莊的地形,字串意義如上所述。

接下來若干行,每行乙個大寫字母、乙個整數,表示該編號的村民會使 kk增加 / 減少多少。行數等同於地形中大寫字母的個數。大寫字母按字典序,即a、b、c的順序排列,保證前後兩行的字母是連續的,村民個數小於等於 10。

輸出格式

解:首先我們可以看出 資料範圍狠小所以是狀壓dp 對於關鍵的點只有十幾個 所以我們會想到 刪點 利用\(floyd\)求最短距離

定義\(f[x][y][p]\)表示在 背x集合 終點為y集合 當前在p號關鍵點的最短時間

那麼我們有兩種情況

在p號點找到乙個cunmin

f[x][y][p]=min(f[x^(1<

蒜頭君救人 狀壓DP

題目描述 蒜頭君是乙個樂於助人的好孩子,這天他所在的鄉村發生了洪水,有多名村民被困於孤島上,於是蒜頭君決定去揹他們離開困境,假設蒜頭君所在的村子是 n m 的網格,網格中.號代表平地,號代表該地已被洪水淹沒,a b 等大寫字母表示該地有村民被困,s代表蒜頭君的起點,t代表蒜頭君的終點。蒜頭君的初始速...

noip模擬賽 蒜頭君救人

分析 之前的一道模擬賽題是dp dfs,這道題是dp bfs.我們設f stu i j 為當前狀態為stu,走到 i,j 的答案,考慮怎麼設計stu,每個人的狀態有3種 要麼在原地,要麼被揹著,要麼已經到了終點,那麼用乙個3進製數儲存就可以了.下面考慮怎麼轉移,直接遞推肯定是不對的,dfs也不行,只...

蒜頭君面試

題目 問題描述 蒜頭君來蒜廠面試的時候,曾經遇到這樣乙個面試題 給定 n 個整數,求裡面出現次數最多的數,如果有多個重複出現的數,求出值最大的乙個。當時可算是給蒜頭君難住了。現在蒜頭君來考考你。輸入格式 第一行輸入乙個整數n 1 n 100000 接下來一行輸入n個 int 範圍內的整數。輸出格式 ...