洛谷P4822 凍結

2022-05-01 00:54:10 字數 2374 閱讀 8549

「我要成為魔法少女!」

「那麼,以靈魂為代價,你希望得到什麼?」

「我要將有關魔法和奇蹟的一切,封印於卡片之中„„」

在這個願望被實現以後的世界裡,人們享受著魔法卡片(\(spellcard\),又名符卡)帶來的便捷。

現在,不需要立下契約也可以使用魔法了!你還不來試一試?

比如,我們在魔法百科全書(\(encyclopedia of spells\))裡用「\(freeze\)」作為關鍵字來查詢,會有很多有趣的結果。

例如,我們熟知的\(cirno\),她的冰凍魔法當然會有對應的 \(spellcard\) 了。 當然,更加令人驚訝的是,居然有凍結時間的魔法,\(cirno\) 的凍青蛙比起這些來真是小巫見大巫了。

這說明之前的世界中有很多魔法少女曾許下控制時間的願望,比如 \(akemi homura\)、\(sakuya izayoi\)、„„

當然,在本題中我們並不是要來研究歷史的,而是研究魔法的應用。

我們考慮最簡單的旅行問題吧: 現在這個大陸上有 \(n\) 個城市,\(m\) 條雙向的道路。城市編號為 \(1~n\),我們在 \(1\) 號城市,需要到 \(n\) 號城市,怎樣才能最快地到達呢?

這不就是最短路問題嗎?我們都知道可以用 \(dijkstra、bellman-ford、floyd-warshall\)等演算法來解決。

現在,我們一共有 k 張可以使時間變慢 \(50\%\)的 \(spellcard\),也就是說,在通過某條路徑時,我們可以選擇使用一張卡片,這樣,我們通過這一條道路的時間 就可以減少到原先的一半。需要注意的是:

在一條道路上最多只能使用一張 \(spellcard\)。

使用一張\(spellcard\) 只在一條道路上起作用。

你不必使用完所有的 \(spellcard\)。

給定以上的資訊,你的任務是:求出在可以使用這不超過 \(k\) 張時間減速的 \(spellcard\) 之情形下,從城市\(1\) 到城市\(n\)最少需要多長時間。

輸入格式:

第一行包含三個整數:\(n、m、k\)。

接下來 \(m\) 行,每行包含三個整數:\(a_i、b_i、time_i\),表示存在一條 \(a_i\)與 \(b_i\)之間的雙向道路,在不使用 \(spellcard\) 之前提下,通過它需要 \(time_i\)的時間。

輸出格式:

輸出乙個整數,表示從\(1\) 號城市到 \(n\)號城市的最小用時。

輸入樣例#1:

4 4 1 

1 2 4

4 2 6

1 3 8

3 4 8

輸出樣例#1:

7
樣例解釋:

在不使用 \(spellcard\) 時,最短路為 \(1à2à4\),總時間為 \(10\)。現在我們可以使用 \(1\) 次 \(spellcard\),那麼我們將通過 \(2à4\) 這條道路的時間減半,此時總時間為\(7\)。

對於\(100\%\)的資料:\(1 ≤ k ≤ n ≤ 50,m ≤ 1000\)。

\(1≤ a_i,b_i ≤ n,2 ≤ time_i ≤ 2000\)。

為保證答案為整數,保證所有的 \(time_i\)均為偶數。

所有資料中的無向圖保證無自環、重邊,且是連通的。

思路:還是跟其他的分層最短路題目一樣,只不過之前的\(k\)次免費的機會變成了\(k\)次免費縮小到一半的機會,那麼分層的時候我們把邊權由\(0\)改為\(w/2\)就可以了。

**:

#include#include#include#include#include#define maxn 5000001

using namespace std;

int n,m,k,head[maxn],num,dis[maxn],s,t;

inline int qread()

struct edge e[maxn];

struct node

};inline void ct(int u, int v, int w)

priority_queueq;

inline void dijkstra() );

while(!q.empty()) );

} } }

}int main()

} }

dijkstra();

int zrj=0x7fffffff;

for(int i=0;i<=k;++i) zrj=min(zrj,dis[n+i*n]);

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

return 0;

}

洛谷P5049 洛谷P5022 題解 旅行

原題 資料加強版 加強版 參考你谷題解 終於調過了 又是一如既往的申必錯誤 noi plus石錘了 原題的資料允許我們 o n 2 暴力斷邊,但是加強版的資料達到了 n log n 級別,我們必須在斷邊這一環節尋求更好的解法。考慮我們進入環後在何處回溯 根據繼續走環走到的點分類 設當前已經從 b 走...

洛谷練習P2279 P1346

2020年,人類在火星上建立了乙個龐大的基地群,總共有n個基地。起初為了節約材料,人類只修建了n 1條道路來連線這些基地,並且每兩個基地都能夠通過道路到達,所以所有的基地形成了乙個巨大的樹狀結構。如果基地a到基地b至少要經過d條道路的話,我們稱基地a到基地b的距離為d。由於火星上非常乾燥,經常引發火...

洛谷 P1396 營救

題目描述 咚咚咚 查水表!原來是查水表來了,現在 找這麼熱心上門的查表員啊!小明感動的熱淚盈眶,開起了門 媽媽下班回家,街坊鄰居說小明被一群陌生人強行押上了警車!媽媽豐富的經驗告訴她小明被帶到了t區,而自己在s區。該市有m條大道連線n個區,一條大道將兩個區相連線,每個大道有乙個擁擠度。小明的媽媽雖然...