HNOI2002 bzoj1010 玩具裝箱

2021-07-15 12:21:51 字數 1070 閱讀 9469

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

輸出最小費用

很明顯動態規劃。

dp表示最小花費,s表示字首和。

dp[i]=min

o(n^2)超時。

記f[i]=i+s[i]-l-1

g[i]=2*(i+s[i])

h[i]=(i+s[i])*(i+s[i])+dp[i]

對於j>k,j比k優的條件為【化簡後】

(h[j]-h[k])/(g[j]-g[k])

#include

#include

#include

#define l long long

l dp[50010],s[50010],f[50010],g[50010],h[50010];

int l,que[50010];

double slo(int x,int y)

int main()

hd=1;

tl=1;

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

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

}

bzoj1588 HNOI2002 營業額統計

給出n個數,求每個數和它前面每個數的差值絕對值的最小值之和。n 32767 很顯然求前驅後驅。可以離散化後用權值線段樹二分找。也可以直接用splay找。或者還可以離線排完序用雙向鍊錶找。你喜歡就好嘍。orz bzoj上rank1 0ms踩所有人 include include include def...

BZOJ 1588 HNOI2002 營業額統計

description 營業額統計 tiger最近被公司公升任為營業部經理,他上任後接受公司交給的第一項任務便是統計並分析公司成立以來的營業情況。tiger拿出了公司的賬本,賬本上記錄了公司成立以來每天的營業額。分析營業情況是一項相當複雜的工作。由於節假日,大減價或者是其他情況的時候,營業額會出現一...

BZOJ 2002 HNOI2010 彈飛羊 塊

如今,用乙隻手滑動塊,並再次改寫這個問題0.0 塊短啊 將進入春天 n片 對於每乙個彈簧的 我們記錄一下從這個彈簧出發直到彈到塊外為止的彈跳次數及落點 查詢沿著落點彈到出去為止 改動從塊開始到這個點為止改動一遍 這樣改動和查詢都是o n 的 include include include inclu...