1. 程式人生 > >[CEOI2004]鋸木廠選址

[CEOI2004]鋸木廠選址

紀念自己推出了第一道斜率優化!

變數宣告:

$sum[i]$表示前$i$棵樹的總重

$dis[i]$表示從開頭到第$i$棵樹的距離

$pay[i]$表示在第$i$處設立廠,花費是多少,只考慮$i$之前的

$f[i]$表示在第$i$處設立第二個廠的總最小花費

那麼假設第一個廠建在$j$處,第二個廠建在$i$處,那麼

那麼可以得出普通的轉移式:(對於$1~i$中的每個數$j$)

$f[i]=min(pay[n+1]-sum[j]*(dis[i]-dis[j])-sum[i]*(dis[n+1]-dis[i]))(j<i)$