題解:
室友教了一波wqs二分
發現還是很神奇的
先介紹一下這個算法
首先我們建立直角坐標系
橫坐標代表白色的邊的數目
縱坐標代表花費的價值
那么我們會發現從中間某個最小的點開始向兩邊遞增
並且其導數是單調不降的
那么我們考慮一條直線,當它與我們需要的這個相切的時候
這條直線在過這個點時在y軸上的截距一定是所有點中最小的
並且,我們會發現與y軸的交點比當前點的y坐標高了-k*x個
舉個例子 bzoj2654
這樣的話也就是說我們要使得原先的答案+用白邊的數目(即x坐標)*-k 最小
這樣就直接對每條白邊-k就可以了
那么這個東西顯然可以二分
另一個例子是 bzoj5311
這道題感覺可以擴展到其他題目
我們可以對k段建x軸,花費建y軸
然后每使用一次操作,花費-k代價
這樣做就可以了
但為什么這樣是對的
是因為我們保證了
首先最優顯然是分n段
然后隨着分段的減少,答案增加的速度顯然是不降的
否則如過降了我之前就可以只增加這么點(如果用了上一次合成的那這一次也一定會更多)