BZOJ1010玩具装箱 - 斜率优化dp

传送门

题目分析:

\(f[i]\)表示装前i个玩具的花费。
列出转移方程:\[f[i] = max\{f[j] + ((i - (j + 1)) + sum[i] - sum[j] - L))^2\}\]
\(x[i] = sum[i] + i\), \(P = L + 1\),上式化为:
\[f[i] = max\{f[j] + (x[i] - x[j] - P)^2\}\]
列式并化为斜率形式:\(S(i, j) = \frac{(f[i] + x[i]^2 + 2x[i]P) - (f[j] + x[j]^2 + 2x[j]P)}{2(x[i] - x[j])}\)
然后就是斜率dp了。

code

#include<bits/stdc++.h>
using namespace std;
const int N = 50050;
typedef long long ll;
int n;
ll L, c[N];
typedef long long ll;
ll f[N], x[N], sum[N];
int que[N];inline ll calc(int i, int j){return f[j] + (x[i] - x[j] - L) * (x[i] - x[j] - L);
}inline bool slopeCheck(int i, int j, int k){return ((f[i] + x[i] * x[i] + 2 * x[i] * L) - (f[j] + x[j] * x[j] + 2 * x[j] * L)) * 2 * (x[j] - x[k]) <=((f[j] + x[j] * x[j] + 2 * x[j] * L) - (f[k] + x[k] * x[k] + 2 * x[k] * L)) * 2 * (x[i] - x[j]);
}int main(){freopen("h.in", "r", stdin);scanf("%lld%lld", &n, &L);for(int i = 1; i <= n; i++) scanf("%lld", &c[i]), sum[i] = sum[i - 1] + c[i], x[i] = sum[i] + i;L += 1;int head, tail;que[head = tail = 1] = 0;for(int i = 1; i <= n; i++){while(head + 1 <= tail && calc(i, que[head]) >= calc(i, que[head + 1])) head++;f[i] = calc(i, que[head]);while(head <= tail - 1 && slopeCheck(i, que[tail], que[tail - 1])) tail--;que[++tail] = i;}printf("%lld", f[n]);return 0;
}

转载于:https://www.cnblogs.com/CzYoL/p/7745228.html

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

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

相关文章

人与机器——解析人工智能的三大类别以及哲学家的相关思想实验

来源&#xff1a;北京物联网智能技术应用协会你是否曾经产生过怀疑&#xff0c;你身边的某个人可能是个机器人呢&#xff1f;毕竟现在由于技术的发展&#xff0c;机器人的外观、行为都有可能被设置得和人类十分相像。这似乎有些荒谬和匪夷所思&#xff0c;但是你如何能百分之百…

linux暂停线程和恢复,是否有可能在Linux [暂停]中检测到线程已进行上下文切换?...

能够当所述线程中的一个被切换上下文(即&#xff0c;暂停)&#xff0c;以检测可以找到&#xff1f;至于你的问题是否可能 - 它认为这是可能的。至少SystemTap(https://sourceware.org/systemtap/)可以做到这一点。probe scheduler.ctxswitch{if (target_pid ! 0&& next…

大战设计模式【12】—— 迭代器模式

迭代器模式&#xff08;Iterator&#xff09; 设计模式使用的例子https://github.com/LinkinStars/DesignPatternsAllExample 一、定义 提供一种方法顺序访问一个聚合对象中的各个元素&#xff0c;而又不暴露其内部的表示。 二、结构 Iterator&#xff08;抽象迭代器&#xff0…

MIT最新报告:完全无人驾驶仍需10年,马斯克:特斯拉已经实现

来源&#xff1a;机器学习研究组订阅号两年前&#xff0c;麻省理工学院成立了「未来工作特别小组」&#xff0c;这个小组目前有20多人&#xff0c;旨在研究「大众创新年代」的工作演变。近期&#xff0c;他们发表了一个最新的报告&#xff0c;重点关注了自动驾驶领域的进展。而…

win7 linux双系统win7启动不了怎么办,双系统windows打不开怎么办|苹果双系统win7打不开怎么解决|mac双系统打不开解决方法-系统城...

2016-03-30 19:28:38  浏览量&#xff1a;22401很多用户都会在电脑上安装Windows双系统甚至多系统&#xff0c;在开机的时候就会出现一个启动菜单让用户选择&#xff0c;如果没有选择将会自动启动默认的系统&#xff0c;那么双系统要怎么修改默认的启动项呢&#xff1f;今天系…

css 外边距合并

1. 当一个元素出现在另一个元素上面时&#xff0c;第一个元素的下外边距会和第二个元素的上边距合并(取较大值) 2. 当一个元素包含另一个元素中时(没有内边距或边框把外边距分隔开)&#xff0c;会发生合并; 2.1条件父元素无边框 2.2 父元素和子元素外边距之间无其他分格元素 3.…

是时候抛弃旧的摩尔定律了

来源&#xff1a;IEEE转自&#xff1a;悦智网在技术领域最著名的准则之一就是摩尔定律。在过去55年的时间里&#xff0c;“摩尔定律”已经描述并预测了晶体管的缩小&#xff0c;如一组称为技术节点的数字在过去以大约每两年一次的频率更新。像一些基于物理学的世界末日时钟一样…

网络对抗技术—-网络对抗实验四

学 号&#xff1a;201421430008 中国人民公安大学 Chinese people’ public security university 网络对抗技术 实验报告 实验四 恶意代码技术 学生姓名 吴宙杨 年级 2014 区队 3 指导教师 高见老师 信息技术与网络安全学院 2016年11月7日 实验任务总纲 2016—20…

linux int64_t 头文件,这对int64_t的处理是GCC和Clang的错误吗?

你不需要去POSIX对它进行排序,ISO C控制这个特定的方面(下面的参考是C11标准).这个答案的其余部分将成为所有“语言律师”,以显示为什么将未添加的行为添加到已签名的值中,以及为什么两个答案(真和假)都有效.首先,您在ISO中未定义int64_t的争论并不十分正确.第7.20.1.1节精确宽…

北大副校长詹启敏回应“25篇论文造假”,​PubPpeer到底靠不靠谱?

来源&#xff1a;科研大匠今日&#xff0c;北京大学常务副校长、北大医学部主任、中国工程院院士詹启敏在个人公众号“潇敏 ScienceArt”上发布《詹启敏关于相关情况的说明》文章&#xff0c;回应了昨日 DeepTech 对北京大学常务副校长詹启敏 25 篇相关论文受到学术不端质疑。事…

c语言课设报告时钟vc环境,C语言课程设计报告模拟时钟转动程序

C语言课程设计报告模拟时钟转动程序 课程设计报告题 目 课 程 名 称 结构化程序设计课程设计 院 部 名 称 专 业 班 级 学 生 姓 名 王蕾 学 号 课程设计地点 课程设计学时 指 导 教 师 金陵科技学院教务处制 程序设计综合课程设计I目 录第一章 课程设计的目的和要求 1.1 C 语言…

用人工智能监督人工 遭遇非技术困局

来源&#xff1a;科技日报远程办公常态化催生云监工软件市场。近日一款名为Enaible的AI监工软件销售火爆&#xff0c;这种AI软件不仅可以盯着员工干活&#xff0c;还可以对员工的工作效率进行打分……一场新冠肺炎疫情&#xff0c;让远程办公逐渐成为常态。钉钉、飞书、企业微信…

Windows10 【系统周期表】【系统下载表】【大型软件表】

系统周期表 商用名称商用英文名代号版本系统版本上市日期服务周期备注Windows 10无Threshold 1150710.0.10240.174432015.07.292015.07.29 - 2015.11.12默认值Windows 10十一月更新Windows 10 November UpdateThreshold 2151110.0.10586.9622015.11.122015.11.12 - 2016.08.02W…

c语言实现图像拼接程序,opencv2实现10张图像上下左右拼接融合分享!

本文实例为大家分享了opencv2实现多张图像上下左右拼接融合的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下在前面的“opencv2两张图像拼接融合_基于SURF特征提取”博文中&#xff0c;实现了两张左右图像的拼接融合&#xff0c;后来我也实现了多张图像的拼接融合。但…

2020年中国城市人工智能发展指数报告

来源 | 36氪研究院&#xff08;转载请注明来源&#xff09;编辑 | 张775大维度、20个三级指标&#xff0c;全面剖析中国36个城市人工智能发展情况2020年是全面建成小康社会与“十三五”规划收官之年&#xff0c;为了实现全面建设小康社会的发展目标、增强经济发展韧性&#xff…

JQuery使用笔记

1.选择器 id选择器:  $(#btnShow) class选择器:  $(.banner) tag选择器:  $(input) 2.常用方法 取 / 设value: $(#btnShow).val()  / $(#btnShow).val(sss) 取 / 设text:  $(#btnShow).text() /  $(#btnShow).text(sss) 取 / 设innerHtml  $(#btnShow).html()…

c语言程序设计 函数说课,《C语言程序设计》之函数说课课件.ppt

您所在位置&#xff1a;网站首页 > 海量文档&nbsp>&nbsp计算机&nbsp>&nbspC/C资料《C语言程序设计》之函数说课课件.ppt16页本文档一共被下载&#xff1a;次,您可全文免费在线阅读后下载本文档。下载提示1.本站不保证该用户上传的文档完整性&#x…

中科院院士:40年7位诺奖得主,美国贝尔实验室做对了什么?

来源&#xff1a;科学网作者&#xff1a;夏建白本文介绍高科技的摇篮之一―― 美国贝尔实验室。本文将不具体介绍在贝尔实验室中发明晶体管、集成电路、激光器、光通信等的具体研究过程&#xff0c;而是介绍贝尔实验室的历届领导和管理思想&#xff0c;尝试探讨其取得这样重大成…

Git中的bash与CMD的区别

Windows在使用git工具时&#xff0c;可以看到有两个命令输入窗&#xff1a; 1. Git CMD 2. Git Bash 两者的区别&#xff1a;Bash是基于CMD的&#xff0c;Bash在CMD的基础上新增了一些命令和功能&#xff0c;故建议使用Bash更方便。 Git GUI 是一个图形操作页面。 参考链接&…

c语言 void**类型转换,void *和其他指针的转化

1在c语言中从int * 到 char *的转化不兼容&#xff0c;但是编译能通过。将void *和其他类型的指针相互赋值不出现警告&#xff0c;这在c语言中是允许的。2在c中类型要求很高&#xff0c;不允许不同类型指针之间的相互赋值&#xff0c;void *指针例外(任何类型指针都可以赋值给v…