WQS二分 學習筆記

2021-08-13 17:09:48 字數 811 閱讀 9357

我的理解 (不一定很對):

大概就是某個東西越多總貢獻越大,要求剛好取n個時的最優解。可以把 dp

狀態裡記的取的個數這一維去掉,而設乙個 co

st,取

k 個物品,總貢獻要多減去cost*k,然後 dp

。cos

t 越大,物品數取越少。 二分 co

st使得 dp

得到的答案剛好取了

n 個物品。 設 g

(x)表示取

x 個時的總貢獻。必須滿足 g(

x)斜率不增才能wqs二分。 f(

x)=g

(x)−

cost

∗x。我們需要找到 co

st使 fm

ax=f

(x0)

,x0=

n 。要能用二分找 co

st,必須 f(

x)是單峰,否則,f′

(x)=

g′(x

)−co

st,cos

t→x0

就不是個正常的遞減函式。若 f(

x)是單峰,則g(

x)斜率必須是遞減的。

注意到 g(

x)斜率可以是有相同的,雖然這樣乙個 co

st可能對應多個 x0

。這其實是沒有問題的: f(

x)有連續一段都是最大值,也就是說二分到最後可能並沒有停在

n , 但答案還是能求的,反正值都一樣,當做停在

n就行了,最後輸出的答案還是補回 n∗

cost

,而不能是最後的 mi

d∗cost。

WQS二分學習筆記

wqs 二分聽起來是個很難的演算法,其實學起來也並不是那麼難。在某些題目中,會對於某個取得越多越優的物品,限定你最多選擇 k 個,問你能得到的最優答案。例如這道題目 cf739e gosha is hunting。這些題目一般都可以通過列舉選擇的物品個數並 o n dp 來做到 o nk 但如果隨著...

總結 wqs二分學習筆記

在某些題目中,強制規定只能選 k 個物品,選多少個和怎麼選都會影響收益,問最優答案。對於上述描述的題目,大部分都可以通過列舉選擇物品的個數做到 o nk 2 或 o nk 的 mathrm 如果沒有選擇個數的限制的話,複雜度大概會降為 o n 級別。先不考慮數量限制。假設要最小化權值。還是拿題說吧 ...

學習筆記 wqs二分 dp凸優化

從乙個經典問題談起 有乙個長度為 n 的序列 a 要求找出恰好 k 個不相交的連續子串行,使得這 k 個序列的和最大 1 leq k leq n leq 10 5,10 9 leq a i leq 10 9 先假裝都會 1 leq k leq n leq 1000 的 dp 做法以及 k 1 的子問...