[hnoi2008]玩具裝箱toy
time limit:1000ms memory limit:165536k
total submit:5 accepted:5
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 434sample output214
1
斜率優化,方程很簡單,優化也很簡單,懶得寫了。
對於這種題要注意兩個地方就好了。
1、雙端佇列的區間是什麼區間。比如說這裡是左閉右閉。首先入隊第乙個元素,r應該還是0。等等等。
2、方程係數分離之後如果要作除法,要注意不等號需不需要變號
#include #include const char fi = "toy.in";
const char fo = "toy.out";
const long maxn = 50010;
typedef long long ll;
long c[maxn];
ll sumpi[maxn];
ll sum[maxn];
long que[maxn];
ll l;
long n;
long l = 0;
long r = 0;
ll f[maxn];
inline ll calc(long j,long k)
inline int getint()
int main()
printf("%lld",f[n]);
return 0;
}
玩具裝箱TOY 斜率優化DP
更新提示 第一次更新 正文 p教授要去看奧運,但是他捨不下他的玩具,於是他決定把所有的玩具運到北京。他使用自己的壓縮器進行壓縮,其可以將任意物品變成一堆,再放到一種特殊的一維容器中。p教授有編號為 1.n 的 n 件玩具,第 i 件玩具經過壓縮後變成一維長度為 c i 為了方便整理,p 教授要求在乙...
習題 玩具裝箱(斜率優化)
題目 傳送門 思路 首先考慮暴力,那麼設dp i 為以前i號元素的最小值 s i 為前i號元素的字首和 那麼轉移方程即為dp i min 顯然樸素的時間複雜度為o n 2 那麼我們化簡一下式子 設有兩個點a,b向i進行轉移,且a比b優 那麼dp a i a 1 s i s a l 2推導過程此處省略...
Luogu P3195玩具裝箱(斜率優化DP)
這題還是比較炫的 題目鏈結 我們設f i 是已經裝了前i個玩具,且第i個玩具是某箱子裡裝的最後乙個東西 廢話 那我們很輕鬆可以想到乙個轉移方程 for int i 1 i n i for int j 0 jj f i min f i f j squa sum i sum j i j 1 l 其中su...