我們可以從n個數中選擇一些,選擇第i個數的代價為ci,且必須選擇n。對於每個沒有被選擇的數i,若它右邊離它最近的乙個被選擇的數是j,則代價為j-i。
求最小代價。
n<=10^6
n^2dp還是很顯然的。
設fi表示i必須選,且i的右邊已經搞定了的最小代價,那麼fi
=min
(fk+
(k−i
−1)∗
(k−i
)/2)
+ci
然後就可以考慮斜率優化了。
把括號拆開,移項,得到決策j比k優的不等式: fj
−fk+
(j2−
k2+k
−j)/
2j−k
然後就普通的打發了。
#include
#include
#include
#define fo(i,a,b) for(int i=a;i<=b;i++)
#define fd(i,a,b) for(int i=a;i>=b;i--)
#define n 1000005
using
namespace
std;
typedef
long
long ll;
typedef
double db;
ll f[n],c[n],ans;
int n,d[n],l,r;
ll calc(int x,int y)
db g(ll x,ll y)
int main()
GDOI2014模擬 伺服器
直到比賽最後幾分鐘,才發現60 資料居然是乙個水dp,結果沒打完。我們需要將乙個檔案複製到n個伺服器上,這些伺服器的編號為s1,s2,sn。首先,我們可以選擇一些伺服器,直接把檔案複製到它們中 將檔案複製到伺服器si上,需要花費ci 0的置放費用。對於沒有直接被複製檔案的伺服器si來說,它依次向後檢...
GDOI2014模擬 網格
description 某城市的街道呈網格狀,左下角座標為a 0,0 右上角座標為b n,m 其中n m。現在從a 0,0 點出發,只能沿著街道向正右方或者正上方行走,且不能經過圖示中直線左上方的點,即任何途徑的點 x,y 都要滿足x y,請問在這些前提下,到達b n,m 有多少種走法。輸入檔案中僅...
GDOI2014模擬 雨天的尾巴
給出乙個n個節點的樹和m次操作,每次操作把x到y的路徑上的所有的點的z種物品 1.求最後每個點最多的物品編號。若有多個相同的取編號小的,若沒有則輸出0.n,m 10 5,z 10 9 include include include include include define fo i,a,b fo...