【JZOJ】3490. 旅遊題解報告

題目


思路

這道題看上去就像一個動態規劃!可是仍是要把矩陣壓成一行。數組

而後按 \(A\)數組 將結構體從小到大排個序。spa

隨後咱們開始了動規標準步驟:code

肯定狀態

很顯然\(f_i\) 表示遊覽完第\(~i~\)個景點是的最長時間。blog

Q(動規小白爲啥動規小白要作這題啊):怎麼看粗來的???io

A:動規不是一維不行加一維的嗎模板

肯定轉移方程

有了這個狀態相信動規小白也能看粗來轉移方程吧!class

那麼咱們假設看完了第\(j\)個景點後就去了第\(i\)個景點(\(j~ \rightarrow ~i\))。im

那麼咱們的方程就顯而易見了。db

\[\begin{matrix}f_i = max\{ f_j + (| ~ x_i - x_j ~ | + | ~ y_i-y_j ~ |) \}+B_i\\ =max\{ f_j + dis(i, j)\}+B_i~~~~~~~~~~~~~~~~~~~~\end{matrix}\]img

舒適提示:

能夠發現直接暴力這麼作的時間複雜度是\(O((nm)^2)\)

即便咱們的題目限時兩秒也會炸!!!

Q:怎麼辦呢???

卡常!!!

一、

若是\(j\)直接從\(1\)開始枚舉就會有冗餘的狀況:

假設你的\(A_i\)\(4\)
\(A_{1 \sim i-1}\)分別是\(\{ 1,1,1,1,1,2,2,2,3 \}\)
你確定選\(3\)都要比選其餘的數要強(請讀者自行理解),因此從\(3\)的那裏開始

二、

使用

register

SPFA

是的又是很明顯地就能夠看出,這題能夠用最短路。

存鄰接表時就只存比第\(i\)個小的就好了,剩下的就是SPFA模板了

最後

關於SPFA

  • 它死了
相關文章
相關標籤/搜索