P3195 [HNOI2008]玩具装箱TOY

P3195 [HNOI2008]玩具装箱TOY

题目描述

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。但他希望费用最小.

输入输出格式

输入格式:

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

输出格式:

输出最小费用

输入输出样例

输入样例#1: 
5 4
3
4
2
1
4
输出样例#1: 

1
——————————————————————————————————————————————————————————————————————
普通的一维DP很好想,题中给出$x = j - i + \sum\limits_{k=i}^{j}C_k$
考虑$(x-L)^2$可以变成$(j-i+\sum\limits_{k=i}^{j}C_k-L)^2 = ((\sum\limits_{k=i}^{j}C_k+1)-(L+1))^2$

读入时直接把C和L都加1
枚举j表示从j+1到i划分成一段,时间是$O(N^2)$,TLE。

$f[i] = min(f[j]+(S_i-S_j-L)^2)$其中$S_i = \sum\limits_{k=1}^{i}C_k$,即C的前缀和

考虑如何对其进行优化

$f[i] = min(f[j]+(S_i-S_j-L)^2)$

$f[i] = min(f[j]+(S_i-L)^2-2(S_i-L)S_j+{S_{j}}^{2})$

$f[i] = (S_i-L)^2+min(y_j-k_ix_j)$

其中$x_j = S_j$,$y_j = f_j + {S_j}^2$,$k_i = 2(S_i-L)$

这就像是一个直线的斜率式

可知$k_i$是单调递增的

将$x_j,y_j$映射到坐标轴里,画一条过点$(x_j, y_j)$的斜率为$k_i$的直线

$y_j - k_ix_j$是它的截距。要使答案最小,就要使截距最小。

维护一个下凸壳(自行百度),可知只有下凸壳上的点组成的直线才有可能成为最优解

因为x是递增的,只需考虑如何在右面加一个点。如果直线是逆时针旋转,斜率变大,截距变小,直接加入

如果是顺时针,删除前一个点,加入当前点。

用单调队列维护下凸壳。

转载于:https://www.cnblogs.com/hkttg/p/9417466.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/485493.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode--671. 合并二叉树

给定两个二叉树&#xff0c;想象当你将它们中的一个覆盖到另一个上时&#xff0c;两个二叉树的一些节点便会重叠。 你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠&#xff0c;那么将他们的值相加作为节点合并后的新值&#xff0c;否则不为 NULL 的节点将直…

吕述望 计算机网络专家,特稿: 中科院吕述望教授:互联网名不符实

国际中华智慧学会创新智慧研究通讯编号&#xff1a;YT-2012-007发布日期&#xff1a;2012年8月28日吕述望教授认为中国互联网名不符实中国香港讯&#xff1a;月前&#xff0c;中国工信部部长隆重宣布&#xff0c;将加快面向全新框架未来互联网的技术研发前沿布局&#xff0c;力…

打开AI芯片的“万能钥匙”

来源&#xff1a;雷锋网 作者&#xff1a;包永刚雷锋网按&#xff0c;新推出的AI芯片因架构的独特性和软件的易用性增加了客户尝试和迁移的成本&#xff0c;因此&#xff0c;软件成为了能否快速、低成本迁移的关键。现在普遍的做法是在TensorFlow写一些后端集成新硬件&#xff…

python2.7 threading RLock/Condition文档翻译 (RLock/Condition详解)

RLock Objects 可重入锁是一个同步原语&#xff0c;它可以被同一个线程多次获取。在内部&#xff0c;除了原始锁使用的锁定/解锁状态之外&#xff0c;它还使用“线程拥有”和“递归级别”的概念。在锁定状态下&#xff0c;某些线程拥有锁&#xff1b;在未锁定状态下&#xff0c…

Leetcode--33. 搜索旋转排序数组

假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如&#xff0c;数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。 搜索一个给定的目标值&#xff0c;如果数组中存在这个目标值&#xff0c;则返回它的索引&#xff0c;否则返回 -1 。 你可以假设数组中不存在…

北理计算机教案,北理工版三年级信息技术教案重点.docx

第1单元 初识神奇计算机第1课 神奇电子计算机【教学目的和要求】1、学生了解计算机组成各部分的名称和作用。2、学生知道什么是计算机软件&#xff0c;了解计算机软件的作用。3、学生了解计算机处理信息的过程。4、学会正确启动与关闭计算机。【教学重点】教学难点&#xff1a;…

Leetcode--162. 寻找峰值

峰值元素是指其值大于左右相邻值的元素。 给定一个输入数组 nums&#xff0c;其中 nums[i] ≠ nums[i1]&#xff0c;找到峰值元素并返回其索引。 数组可能包含多个峰值&#xff0c;在这种情况下&#xff0c;返回任何一个峰值所在位置即可。 你可以假设 nums[-1] nums[n] -…

计算机发展历程按什么划分,计算机的发展阶段是按什么划分的

大家好&#xff0c;我是时间财富网智能客服时间君&#xff0c;上述问题将由我为大家进行解答。计算机的发展阶段是按电子元件划分的&#xff0c;具体阶段如下:1、第1代为电子管数字机( 1946到1958年)。硬件方面,逻辑元件采用的是真空电子管&#xff0c;主存储器采用汞延迟线、阴…

因果推理、正则化上榜:权威专家盘点过去50年最重要的统计学思想

来源&#xff1a;机器学习研究组订阅在日常生活中&#xff0c;统计学无处不在&#xff0c;每个人、每件事似乎都可以使用统计数据加以说明。随着人类迈入大数据时代&#xff0c;统计学在方方面面更是发挥了不可或缺的作用。统计学思想&#xff0c;就是在统计实际工作、统计学理…

Nginx正向与反向代理

Nginx 主要用于反向代理与负载均衡 什么是代理服务器&#xff08;Proxy Serve&#xff09;&#xff1f; 提供代理服务的电脑系统或其它类型的网络终端,代替网络用户去取得网络信息。 为什么使用代理服务器&#xff1f; 提高访问速度 由于目标主机返回的数据会存放在代理服务…

计算机组成原理延迟时间ty,计算机组成原理第6章_5运算方法.ppt

文档介绍&#xff1a;6.5 算术逻辑单元一、ALU 电路四位 ALU 74181M 0 算术运算M 1 逻辑运算S3 ~ S0 不同取值,可做不同运算ALUAiBiFi…SiM位片式运算器4位双极型位片式运算器AM2901,它将ALU、通用寄存器组、多路开关、移位器等逻辑构件集成在一个芯片内。通用寄存器寄存器写…

Leetcode--172. 阶乘后的零

给定一个整数 n&#xff0c;返回 n! 结果尾数中零的数量。 示例 1: 输入: 3 输出: 0 解释: 3! 6, 尾数中没有零。 示例 2: 输入: 5 输出: 1 解释: 5! 120, 尾数中有 1 个零. 说明: 你算法的时间复杂度应为 O(log n) 。 思路&#xff1a; 能出现零的因子里面一定出现2&am…

生命起源的奥秘:分子生物学对生命起源研究

来源&#xff1a; 科学技术哲学1993年加州大学柏克利分校的詹腓力教授邀请了一批科学家、哲学家到加州中部的一个海滨小镇相聚。这些学者来自著名的学术中心&#xff0c;包括剑桥、慕尼黑、芝加哥大学等学府&#xff0c;他们是来质疑一个统治了科学界长达150年的学说。保罗.尼尔…

Python学习第二天

运算符类型&#xff1a; 1.算术运算符 a 10*10 2.赋值运算 a a 1 3.比较运算 a 1 > 5 4.逻辑运算 a 1>6 or 11 5.成员运算 a "文" in "郑建文" 基本数据类型 数字  int 字符串  str 列表  list 元祖  tuple 字典  dict 布尔值  b…

Promise,async和js的事件循环机制

Promise Promise有等待&#xff0c;已成功&#xff0c;失败&#xff0c;三种状态&#xff0c;状态的改变会触发then回调函数和catch回调函数。 当执行一个Promise时&#xff0c;它会立刻返回一个Promise对象&#xff0c;并且不会阻塞后续代码执行。 当Promise的状态发生改变后…

介绍计算机硬件的情景剧表演,手忙脚乱的情景剧

继去年一手操办了女儿班上的元旦迎新会后&#xff0c;昨天&#xff0c;我再一次自编自演自导。不得不说&#xff0c;学校真是磨练人的地方。一、创作剧本的起因半个月前&#xff0c;宋老师推荐我和女儿参加学校举行的亲子诵读比赛。去年也参与过一次&#xff0c;我己经形成了固…

java 双因素认证(2FA)TOTP demo

TOTP 的全称是"基于时间的一次性密码"&#xff08;Time-based One-time Password&#xff09;。它是公认的可靠解决方案&#xff0c;已经写入国际标准 RFC6238。 很早就知道有这个东西了,一直不知道是怎么实现的. 比如 QQ 安全中心的密钥,U盾&#xff0c;就是动态密码…

win7计算机管理中看不到新加的硬盘,win7系统看不到第二块硬盘的解决方法.

win7系统想必大家都非常熟悉吧&#xff0c;然而有时候可能会碰到win7系统看不到第二块硬盘的情况&#xff0c;想必大家都遇到过win7系统看不到第二块硬盘的情况吧&#xff0c;那么应该怎么处理win7系统看不到第二块硬盘呢&#xff1f;我们依照1、进入win7系统控制面板&#xff…

美国航空发动机发展经验,给中国的启示!

内容来源&#xff1a;网络本期编辑&#xff1a;小艾 航空发动机是装备制造领域的最高端产品&#xff0c;代表了装备制造业的最高技术水平&#xff0c;被誉为现代工业“皇冠上的明珠”&#xff0c;其重要性一向为人所强调&#xff0c;但成为航空发动机强国的道路之艰难却往往为人…

session的钝化和活化

钝化&#xff1a;内存->硬盘 活化&#xff1a;硬盘->内存 session对象的四种状态&#xff1a; 1.session.setAttribute("a",xxx),将对象a绑定到session中 2.session.removeAttribute("a")&#xff0c;将对象a从session中解绑 监听session对象的…