D. Colored Portals

纯粹的發表於2024-08-21

原題連結

題意

對於有相同顏色傳送門的城市 \(i,j\),可以花 \(|i-j|\) 的代價從 \(i\to j\)\(j \to i\)

問從城市 \(x\to y\) 的最小代價,或者報告無法到達

分析

對於無法到達的情況,很簡單,用並查集維護即可

而對於可以到達的情況,我們發現,兩座城市如果可以互相直接抵達,cost 是確定的

所以我們對與可以直接互相到達的城市,建立雙向邊,權值為 \(|i-j|\)

然後查詢最小代價就變成了查詢兩個點的最短路

預估時間複雜度 \(O(????)\)

困難點在於,建邊需要平方的複雜度,查詢兩點最短路也很複雜

能不能最佳化?

我們可以在建邊上使技巧

由於只有相同顏色的傳送門才會建邊,且邊權值為城市編號的差

所以我們可以把具有每種顏色傳送門的城市剝離開來,然後按升序排序,然後遍歷一遍,只在相鄰的元素之間建邊

這樣,圖的連通性不變,任意兩點間的距離也不變,但是建邊的時間複雜度變成了線性

建邊的複雜度解決了,查詢的時間複雜度仍然很高,我們該如何解決?