wqs二分


題解:

室友教了一波wqs二分

發現還是很神奇的

先介紹一下這個算法

首先我們建立直角坐標系

橫坐標代表白色的邊的數目

縱坐標代表花費的價值

那么我們會發現從中間某個最小的點開始向兩邊遞增

並且其導數是單調不降的

那么我們考慮一條直線,當它與我們需要的這個相切的時候

這條直線在過這個點時在y軸上的截距一定是所有點中最小的

並且,我們會發現與y軸的交點比當前點的y坐標高了-k*x個

舉個例子 bzoj2654

這樣的話也就是說我們要使得原先的答案+用白邊的數目(即x坐標)*-k  最小

這樣就直接對每條白邊-k就可以了

那么這個東西顯然可以二分

另一個例子是 bzoj5311

這道題感覺可以擴展到其他題目

我們可以對k段建x軸,花費建y軸

然后每使用一次操作,花費-k代價

這樣做就可以了

但為什么這樣是對的

是因為我們保證了

首先最優顯然是分n段

然后隨着分段的減少,答案增加的速度顯然是不降的

否則如過降了我之前就可以只增加這么點(如果用了上一次合成的那這一次也一定會更多)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM