ac通道:
【題解】
看到題很容易想到動態規劃。
用f[i]表示裝前i個玩具所需的費用,sum陣列維護字首和。
狀態轉移方程:f[i]=min (0
如果在維護字首和時令sum[i]=sum[i-1]+a[i]+i, 設c=l+1
那麼則有:f[i]=min (0
如果拆開平方就會出現sum[i]*sum[j]這樣的項,那麼我們考慮斜率優化。
假設k~i比j~i更優,則f[k]+sum[i]^2+sum[k]^2+c^2-2sum[i]sum[k]-2c*sum[i]-2c*sum[k]
化簡得:(f[k]-f[j]+sum[k]^2-sum[j]^2)/(sum[k]-sum[j])<2(sum[i]-c)
這就是斜率表示式了,接下來就是套路。。。。。。
注意用long long,否則會爆掉。(被這個坑了,一直wa)
/**************
bzoj 1010
by chty
2016.11.14
**************/
#include#include#include#include#include#include#includeusing namespace std;
long long n,l,c,a[50010],sum[50010],q[50010],f[50010];
inline int read()
while(isdigit(ch))
return x*f;
}double slop(int x,int y) //計算斜率
int main()
{ n=read(); l=read(); c=l+1;
for(int i=1;i<=n;i++) a[i]=read();
for(int i=1;i<=n;i++) sum[i]=sum[i-1]+a[i];
for(int i=1;i<=n;i++) sum[i]+=i;
int l=0,r=0;
for(int i=1;i<=n;i++)
{while(l
BZOJ1010 玩具裝箱toy
1010 hnoi2008 玩具裝箱toy time limit 1 sec memory limit 162 mb submit 7631 solved 2924 description p教授要去看奧運,但是他捨不下他的玩具,於是他決定把所有的玩具運到北京。他使用自己的壓縮器進行壓縮,其可以將任...
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 ...