HNOI2008玩具裝箱Toy 斜率優化DP

2021-07-26 20:45:14 字數 2099 閱讀 8255

題目描述

p教授要去看奧運,但是他捨不下他的玩具,於是他決定把所有的玩具運到北京。他使用自己的壓縮器進行壓縮,其可以將任意物品變成一堆,再放到一種特殊的一維容器中。p教授有編號為1…n的n件玩具,第i件玩具經過壓縮後變成一維長度為ci.為了方便整理,p教授要求在乙個一維容器中的玩具編號是連續的。同時如果乙個一維容器中有多個玩具,那麼兩件玩具之間要加入乙個單位長度的填充物,形式地說如果將第i件玩具到第j個玩具放到乙個容器中,那麼容器的長度將為 x=j-i+sigma(ck) i<=k<=j 製作容器的費用與容器的長度有關,根據教授研究,如果容器長度為x,其製作費用為(x-l)^2.其中l是乙個常量。p教授不關心容器的數目,他可以製作出任意長度的容器,甚至超過l。但他希望費用最小.

輸入輸出格式

輸入格式:

第一行輸入兩個整數n,l.接下來n行輸入ci.1<=n<=50000,1<=l,ci<=10^7

輸出格式:

輸出最小費用

分析:

1.觀察到本題的階段性,首先推出dp方程dp[i]=min,令f[i]=sum[i]+i,c=l+1,則 dp

[i]=

(min

)dp[

j]+(

f[i]

−f[j

]−c)

2 2.因為f[i]具有單調性,故考慮斜率優化dp

3.設決策點k < j 且j優於k則 dp

[k]+

f[i]

2+f[

k]2+

c2−2

∗f[i

]∗f[

k]−2

c∗f[

i]+2

c∗f[

k]>dp

[j]+

f[i]

2+f[

j]2+

c2−2

∗f[i

]∗f[

j]−2

c∗f[

i]+2

c∗f[

j]最後得(d

p[j]

−dp[

k]+f

[j]2

−f[k

]2)(

f[j]

−f[k

])<2(

f[i]

−c)①

4.令w[i]為2(f[i]-c),設s(

j,k)

=(dp

[j]−

dp[k

]+f[

j]2−

f[k]

2)(f

[j]−

f[k]

) 結論 1:對於 i 的兩個決策點 k,j(k < j),如果有 s(j,k) < w[i],則決策 j比 k 優,反之,k 比 j 優。

結論 2:對於三個決策點 k,j,i(k < j < i),如果有 s(j,k) > s(i,j),則決策 j永遠不會成為最優決策。

那麼,我們可以用乙個單調佇列來維護決策,利用以上決策剔除無用決策

①對於隊首,如果 s(q[l+1],q[l]) < w[i],說明 q[l+1]比 q[l]優,去掉q[l],一直到不滿足條件為止。

②此時 q[l]就是當前點的最優決策,根據狀態轉移方程計算 f[i]的值。

③對於隊尾,如果 s(q[r],q[r-1]) > s(i,q[r]),證明 q[r]永遠不會成為最優決策,去掉 q[r],一直到不滿足條件為止,然後將決策 i 入隊。

#include

#include

#include

#include

using namespace std;

typedef long long ll;

const int maxn=50010;

ll c[maxn],f[maxn],sum[maxn];

ll dp[maxn];

intq[maxn*10];

int n,l;

int t;

double s(int

x,int

y)int main()

printf("%lld",dp[n]);

return

0;}

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教授要求在乙個一維容器中的玩具編號是連續的。同時...