HNOI2008 玩具裝箱TOY

2021-09-10 09:37:32 字數 1228 閱讀 8499

這題可以說是斜率優化dp的模板題。

首先,我們先推推它的dp式:

f[i]=min;

這裡的c[i]表示的是原來的c[1~i]的和

然後我們假設k我們可以將c[i]再表示為c[1~i]+i,這樣就簡單很多了。

改改dp式:f[i]=min;

f[j]+(c[i]-c[j]-l-1)2

2我們用換元法,設x=c[j]-l-1,y=c[k]-l-1

f[j]+(c[i]-x)2

2f[j]+c[i]2-2 * c[i] * x +x2

2-2 * c[i] * y+y2

f[j]-f[k]+x2-y2

<2 * c[i] * (x-y)

f[j]-f[k]+x2-y2

<2 * c[i] * (c[j]-c[k])

(f[j]-f[k]+x2-y2)/(c[j]-c[k])<2*c[i]

上標:

#include

#define n 50010

#define db double

#define ll long long

using namespace std;

int n,l,g[n]

,len=

0,l=0;

ll c[n]

,f[n]

;db ii;

inline

intread()

inline ll sqr

(ll x)

db solve

(int x,

int y)

intmain()

;c[i]=c[1~i]+i

n=read()

,l=read()

;for

(int i=

1;i<=n;i++

) c[i]

=c[i-1]

+read()

;for

(int i=

1;i<=n;i++

) c[i]

+=i;

for(

int i=

1;i<=n;i++

)printf

("%lld\n"

,f[n]);

return0;

}

HNOI2008 玩具裝箱toy

重點在講斜率優化 description p教授要去看奧運,但是他捨不下他的玩具,於是他決定把所有的玩具運到北京。他使用自己的壓縮器進行壓縮,其可以將任意物品變成一堆,再放到一種特殊的一維容器中。p教授有編號為1.n的n件玩具,第i件玩具經過壓縮後變成一維長度為ci.為了方便整理,p教授要求在乙個一...

HNOI2008 玩具裝箱toy

dp i min dp j sum i sum j c 2 dp k sum i sum k c 2 dp k si sum k 2 dp k si 2 2 si sum k sum k 2 dp k sum k 2 dp j sum j 2 2 si sum k sum j yk yj 2 si ...

HNOI2008 玩具裝箱TOY

題目描述 p教授要去看奧運,但是他捨不下他的玩具,於是他決定把所有的玩具運到北京。他使用自己的壓縮器進行壓縮,其可以將任意物品變成一堆,再放到一種特殊的一維容器中。p教授有編號為1 n的n件玩具,第i件玩具經過壓縮後變成一維長度為ci.為了方便整理,p教授要求在乙個一維容器中的玩具編號是連續的。同時...