洛谷P3195 [HNOI2008]玩具装箱TOY——斜率优化DP
题目:https://www.luogu.org/problemnew/show/P3195
第一次用斜率优化...其实还是有点云里雾里的;
网上的题解都很详细,我的理解就是通过把式子变形,假定一个最优解,得到的是一条直线,斜率已知;
然后找到最接近这个最优斜率的点作为答案;
同时发现斜率单调递增,所以可以用单调队列;
代码是惊人地短呢;
还有一个问题,就是下面这篇代码中注释掉的那句会WA,可是我觉得它不过是把下面一句展开了而已啊?
代码如下:
#include<iostream> #include<cstdio> #include<cstring> using namespace std; typedef double db; int const maxn=50005; int n,l,q[maxn]; db sum[maxn],f[maxn]; db a(int i){return sum[i]+i;} db b(int i){return sum[i]+i+l+1;} db y(int i){return f[i]+b(i)*b(i);} db x(int i){return b(i);} db slope(int i,int j){return (y(i)-y(j))/(x(i)-x(j));} int main() {scanf("%d%d",&n,&l);for(int i=1;i<=n;i++){scanf("%lf",&sum[i]);sum[i]+=sum[i-1];}int head=1,tail=1;for(int i=1;i<=n;i++){while(head<tail&&slope(q[head],q[head+1])<2*a(i))head++; // f[i]=y(q[head])-2*a(i)*b(q[head])+a(i)*a(i);f[i]=f[q[head]]+(a(i)-b(q[head]))*(a(i)-b(q[head]));while(head<tail&&slope(q[tail-1],q[tail])>slope(q[tail-1],i))tail--;q[++tail]=i;}printf("%lld",(long long)f[n]);return 0; }
转载于:https://www.cnblogs.com/Zinn/p/9138073.html
洛谷P3195 [HNOI2008]玩具装箱TOY——斜率优化DP相关推荐
- YBTOJ洛谷P3195:玩具装箱(斜率优化dp)
传送门 文章目录 前言 解析 代码 前言 斜率优化dp,就是利用斜率优化的dp (逃) 解析 第一道斜优的题 分析题目 设sumisum_isumi为1-i的c的前缀和 容易写出dp转移式: dpi ...
- bzoj1010[HNOI2008]玩具装箱toy 斜率优化dp
1010: [HNOI2008]玩具装箱toy Time Limit: 1 Sec Memory Limit: 162 MB Submit: 11893 Solved: 5061 [Submit] ...
- BZOJ 1010: [HNOI2008]玩具装箱toy 斜率优化dp
Description P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京.他使用自己的压缩器进行压缩,其可以将任意物品变成一堆,再放到一种特殊的一维容器中.P教授有编号为1... ...
- 洛谷P3195 [HNOI2008]玩具装箱TOY
题目:https://www.luogu.org/problemnew/show/P3195 题目描述 P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京.他使用自己的压缩器进行压 ...
- 洛谷P3195 [HNOI2008]玩具装箱TOY(单调队列优化DP)
题目描述 P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京.他使用自己的压缩器进行压缩,其可以将任意物品变成一堆,再放到一种特殊的一维容器中.P教授有编号为1...N的N件玩具, ...
- BZOJ1010:[HNOI2008]玩具装箱TOY(斜率优化DP)
Description P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京.他使用自己的压缩器进行压 缩,其可以将任意物品变成一堆,再放到一种特殊的一维容器中.P教授有编号为1.. ...
- P3195 [HNOI2008]玩具装箱TOY(斜率优化)
题目描述 P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京.他使用自己的压缩器进行压缩,其可以将任意物品变成一堆,再放到一种特殊的一维容器中.P教授有编号为 1\cdots N1 ...
- 『玩具装箱TOY 斜率优化DP』
玩具装箱TOY(HNOI2008) Description P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京.他使用自己的压缩器进行压缩,其可以将任意物品变成一堆,再放到一种特殊 ...
- 【bzoj1010】玩具装箱toy——斜率优化dp
题目链接 第一道自己推的斜率优化dp>< 首先要明确一点:装进同一个容器的toys一定要是连着的几个(否则的话可以直接贪心)-->之前理解错题意WA了一次...... 用sum[i] ...
最新文章
- win10双屏让任务栏显示不相同的方法
- 如何在迭代时从列表中删除项目?
- 给mysql的root %用户添加grant权限。并给创建的用户赋予权限
- 单体模式singleton
- mysql 5.7.13 mac_Mac 安装mysql 5.7.13版本 登录及改密码
- jackson 复杂对象集合 的几种简单转换
- 网管必须掌握的八个DOS命令
- [随笔所想] 2021年新年碎碎念-加油了不起的干饭人!
- View和ViewGroup
- 运筹帷幄决胜千里,Python3.10原生协程asyncio工业级真实协程异步消费任务调度实践
- 关于Gstreamer出现“Could not send sticky events”的机制探究
- 搜索引擎优化的优势及发展问题
- [低级错误]an attribute defined in * line * hides this method pylint (method-hidden)
- IP地址转换函数 inet_pton、inet_ntop与 inet_aton、inet_addr、 inet_ntoa
- P5405 [CTS2019]氪金手游 【数学概率+树形dp】
- linux下c语言调用mysql,Linux下C语言操作MYSQL总结
- c1科目三灯光全语言播报,新规科三全程语音提示(灯光模拟+项目操作),人手一份,考试必备!...
- python一行输出多个数据_如何在Python中让两个print()函数的输出打印在一行内?
- 科大讯飞语音实现Android拨号之一
- 登录用户互挤 实现的思路
热门文章
- delphi 鼠标获取窗口句柄_Python 脚本自动对窗口进行截图
- 机器人改变生活利弊英语作文_左手建筑右手餐饮,机器人如何改变大众生活? 圆梦人感言...
- 安装docker环境
- ts获取服务器数据_在 Angular6 中使用 HTTP 请求服务端数据
- python arp_在python上发出ARP请求
- python可以处理哪些文件_Python(文件处理)
- python中列表用什么表示_python中的列表
- 图像局部特征(二十)--Textons
- 决策树(九)--极端随机森林及OpenCV源码分析
- ecshop bonuscontroller.php,ECSHOP线下红包不能支持最小订单