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第一题竟然不是这道题,而是NOI的货币兑换,简直了……

  这道题我翻了网上的许多题解,看的也是似懂非懂。于是,我来写一写自己的想法,不过似乎和大多网上的不一样……

  直接上截图:

  下面贴代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define File(s) freopen(s".in","r",stdin),freopen(s".out","w",stdout)
#define maxn 50010 using namespace std;
typedef long long llg; struct data{
llg x,y;
}s[maxn];
int n,L,d[maxn],l,r;
llg f[maxn],w[maxn]; int getint(){
int w=0;bool q=0;
char c=getchar();
while((c>'9'||c<'0')&&c!='-') c=getchar();
if(c=='-') c=getchar(),q=1;
while(c>='0'&&c<='9') w=w*10+c-'0',c=getchar();
return q?-w:w;
} double xie(data a,data b){return (double)(b.y-a.y)/(double)(b.x-a.x);}
llg ji(llg x){return x*x;} int main(){
File("a");
n=getint(); L=getint()+1;
for(int i=1;i<=n;i++){
w[i]=getint(); w[i]+=w[i-1];
while(l<r && xie(s[d[l]],s[d[l+1]])<(w[i]+i)*2) l++;
f[i]=f[d[l]]+ji(w[i]+i-w[d[l]]-d[l]-L);
s[i].x=w[i]+i; s[i].y=f[i]+ji(w[i]+i)+2*(w[i]+i)*L;
while(l<r && xie(s[d[r-1]],s[d[r]])>=xie(s[d[r]],s[i])) r--;
d[++r]=i;
}
printf("%lld",f[n]);
}

最新文章

  1. 集成基于OAuth协议的单点登陆
  2. CSS jQuery 图片全屏切换
  3. 基于visual Studio2013解决算法导论之025双向循环链表
  4. @media max-width 与jquery宽度取值的差异
  5. 深入理解CSS盒模型
  6. 前端Web开发MVC模式-入门示例
  7. jQuery中的DOM操作------复制及包裹节点
  8. JDBC 初识
  9. 说一说MVC的CompressActionFilterAttrubute(五)
  10. 《HelloGitHub月刊》第 10 期
  11. ValueOf()和toString()
  12. Spring MVC工作流程
  13. linux上部署engineercms、docker和onlyoffice实现文档协作
  14. Aspose.Words五 MergeField
  15. mongoDB之监控工具mongostat
  16. Material Design系列第三篇——Using the Material Theme
  17. filter对数组和对象的过滤
  18. Error: Cannot find a valid baseurl for repo: epel
  19. Jquery 选择器,分不清啊
  20. 反射机制:获取class的方法

热门文章

  1. Android实用代码七段(五)
  2. yii2搭建完美后台并实现rbac权限控制案例教程
  3. CMPP3.0实现物联网卡通讯
  4. Java代码规范
  5. easyui datagrid 键盘上下控制选中行
  6. 问题解决——开启Guest后仍无法共享打印机
  7. hibernate.xml文件详解
  8. Android 项目中文件夹的说明与作用(转)
  9. java 判断两个时间相差的天数
  10. [转]MongoDB基本命令用