dsy1010: [HNOI2008]玩具装箱

【题目描述】

有n个数,分成连续的若干段,每段(假设从第j个到第i个组成一段)的分数为 (X-L)^2,X为j-i+Sigma(Ck) i<=k<=j,其中L是一个常量。目标:各段分数的总和最小。

【输入格式】

第一行:两个整数N,L.下来N个数字Ci.1<=N<=50000,1<=L,Ci<=10^7

【输出格式】

一个整数,各段分数总和的值最小。

Sample Input

5 4

3 4 2 1 4

Sample Output

1

维护一个右下凸包。

 #include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<queue>
using namespace std; typedef long long LL;
const LL N=;
LL n,L,NL,f[N],sum[N],s[N],Q[N]; // f[i]=a[i]*x[j]+b[j]
// LL=L+1
// a[i]=-2*(s[i]-LL)
// x[j]=s[j]
// b[j]=f[j]+s[j]^2 double X(LL i){return s[i];}
double Y(LL i){return f[i]+s[i]*s[i];}
double find_k(LL i,LL j){return (Y(j)-Y(i))/(X(j)-X(i));} int main()
{
// freopen("a.in","r",stdin);
freopen("toy.in","r",stdin);
freopen("toy.out","w",stdout);
scanf("%lld%lld",&n,&L);
sum[]=;s[]=;NL=L+;
for(int i=;i<=n;i++)
{
LL x;
scanf("%lld",&x);
sum[i]=sum[i-]+x;
}
for(int i=;i<=n;i++) s[i]=sum[i]+i;
// for(LL i=1;i<=n;i++) printf("%d ",sum[i]);printf("\n");
// for(LL i=1;i<=n;i++) printf("%d ",s[i]);printf("\n");
LL l=,r=,j,ai,xj,bj,ti;
double k;
memset(f,,sizeof(f));
for(int i=;i<=n;i++)
{
ai=(-)*(s[i]-NL);
while(l<r && find_k(Q[l],Q[l+])<=(-ai) ) l++;
j=Q[l];
xj=s[j];
bj=f[j]+s[j]*s[j];
ti=(s[i]-NL)*(s[i]-NL);
f[i]=ai*xj+bj+ti;
while(l<r && find_k(Q[r],Q[r-])>find_k(i,Q[r])) r--;
Q[++r]=i;
}
printf("%lld\n",f[n]);
return ;
}

【bzoj1010-toy】斜率优化入门模板的更多相关文章

  1. 斜率优化入门学习+总结 Apio2011特别行动队&Apio2014序列分割&HZOI2008玩具装箱&ZJOI2007仓库建设&小P的牧场&防御准备&Sdoi2016征途

    斜率优化: 额...这是篇7个题的题解... 首先说说斜率优化是个啥,额... f[i]=min(f[j]+xxxx(i,j)) ;   1<=j<i (O(n^2)暴力)这样一个式子,首 ...

  2. bzoj1010[HNOI2008]玩具装箱toy 斜率优化dp

    1010: [HNOI2008]玩具装箱toy Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 11893  Solved: 5061[Submit][S ...

  3. 【bzoj1010】[HNOI2008]玩具装箱toy 斜率优化dp

    题目描述 P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京.他使用自己的压缩器进行压缩,其可以将任意物品变成一堆,再放到一种特殊的一维容器中.P教授有编号为1...N的N件玩具, ...

  4. 【BZOJ1010】【HNOI2008】玩具装箱toy (斜率优化DP) 解题报告

    题目: 题目在这里 思路与做法: 这题不难想. 首先我们先推出一个普通的dp方程: \(f_i = min \{ f_j+(i-j-1+sum_i-sum_j-L)^2\}\) 然后就推一推式子了: ...

  5. bzoj1010: [HNOI2008]玩具装箱toy——斜率优化

    方程 $\Large f(i)=min(f(j)+(s(i)-s(j)-1-L)^2)$ 其中$s(i)$为i的前缀和再加上$i$ 对于某个$i$若$j$比$k$优,则 $\large f(j)+(s ...

  6. BZOJ 1010: [HNOI2008]玩具装箱toy 斜率优化DP

    1010: [HNOI2008]玩具装箱toy Description P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京.他使用自己的压缩器进行压缩,其可以将任意物品变成一堆,再 ...

  7. 『玩具装箱TOY 斜率优化DP』

    玩具装箱TOY(HNOI2008) Description P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京.他使用自己的压缩器进行压缩,其可以将任意物品变成一堆,再放到一种特殊 ...

  8. hdu3507 Print Article(斜率优化入门)(pascal)

    Problem Description Zero has an old printer that doesn't work well sometimes. As it is antique, he s ...

  9. Bzoj 1010: [HNOI2008]玩具装箱toy(斜率优化)

    1010: [HNOI2008]玩具装箱toy Time Limit: 1 Sec Memory Limit: 162 MB Description P教授要去看奥运,但是他舍不下他的玩具,于是他决定 ...

随机推荐

  1. iOS-Debug Symbol(调试符号)

    Debug Symbol(调试符号) 编译警告 从svn下载下来的文件,到处都是编译警告,看着不爽,找下原因,没想到还是一条大鱼 warning: (i386) /UsersLibrary/Devel ...

  2. Python request 简单使用

    Requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库.它比 urllib 更加方便,可以节约我们大量的工作,完全满足 HTT ...

  3. LeetCode - 35. Search Insert Position(48ms)

    Given a sorted array and a target value, return the index if the target is found. If not, return the ...

  4. Visual Studio 2015安装包

    点击下载

  5. 详谈P(查准率),R(查全率),F1值

    怎么来的? 我们平时用的精度accuracy,也就是整体的正确率 acc = predict_right_num / predict_num 这个虽然常用,但不能满足所有任务的需求.比如,因为香蕉太多 ...

  6. 二分图的最大匹配——Hopcroft-Karp算法

    http://blog.csdn.net/wall_f/article/details/8248373

  7. iOS-登录发送验证码时60秒倒计时,直接用

    __block NSInteger timeout= ; //倒计时时间 KWeakSelf dispatch_queue_t queue = dispatch_get_global_queue(DI ...

  8. win7 redis

    <?php /* windows下php安装redis扩展 php_redis下载地址:https://pecl.php.net/package/redis 点击redis安装版本后面的 DLL ...

  9. sometimes-ever js中创建数组,并往数组里添加元素

    数组的创建 var arrayObj = new Array(); //创建一个数组 var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限,是长 ...

  10. 批处理之FOR命令