BZOJ1010 玩具裝箱toy

2021-07-05 23:12:57 字數 1061 閱讀 1173

1010: [hnoi2008]玩具裝箱toy

time limit: 1 sec memory limit: 162 mb

submit: 7631 solved: 2924

description

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。但他希望費用最小.

input

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

output

輸出最小費用

sample input

5 44

sample output

總算過了

斜率優化dp

推導見草稿紙(自己動手,豐衣足食)

#include

#include

#define ll long long

#define sqr(x) (x)*(x)

using namespace std;

intq[50010],c[50010],n,l,i,l,r;

ll s[50010],a[50010],b[50010],f[50010],h[50010];

double r(ll x,ll y)

int main()

q[l=r=1]=0;

for(i=1;i<=n;i++)

printf("%lld\n",f[n]);

return

0;}

BZOJ1010玩具裝箱Toy

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

BZOJ1010 玩具裝箱toy

題目鏈結 bzoj1010 題目大意把n 個數分成若干段,從i到 j 分為一段的花費co st i j jk iva l k j i 求最小花費。分析 1.斜率優化dp,dp i min dp j co st j 1 i 2.先把l 1 設f x xk 1 val k x ff x d p x f ...

BZOJ1010 玩具裝箱toy

斜率優化dp。首先比較容易想到 但是很不幸,由上式的可以看出這實際上要用到兩層迴圈,而資料量為50000,如果這樣做,肯定超時,這時候需要斜率優化了。如果遞推式能變成 且單調,則可使用斜率優化。我們將式變形,令 則由此判斷可以使用斜率優化。關鍵的來了 如果我們認為的兩個方案且的方案的方案好則 dp ...