题目: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相关推荐

  1. YBTOJ洛谷P3195:玩具装箱(斜率优化dp)

    传送门 文章目录 前言 解析 代码 前言 斜率优化dp,就是利用斜率优化的dp (逃) 解析 第一道斜优的题 分析题目 设sumisum_isumi​为1-i的c的前缀和 容易写出dp转移式: dpi ...

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

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

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

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

  4. 洛谷P3195 [HNOI2008]玩具装箱TOY

    题目:https://www.luogu.org/problemnew/show/P3195 题目描述 P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京.他使用自己的压缩器进行压 ...

  5. 洛谷P3195 [HNOI2008]玩具装箱TOY(单调队列优化DP)

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

  6. BZOJ1010:[HNOI2008]玩具装箱TOY(斜率优化DP)

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

  7. P3195 [HNOI2008]玩具装箱TOY(斜率优化)

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

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

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

  9. 【bzoj1010】玩具装箱toy——斜率优化dp

    题目链接 第一道自己推的斜率优化dp>< 首先要明确一点:装进同一个容器的toys一定要是连着的几个(否则的话可以直接贪心)-->之前理解错题意WA了一次...... 用sum[i] ...

最新文章

  1. win10双屏让任务栏显示不相同的方法
  2. 如何在迭代时从列表中删除项目?
  3. 给mysql的root %用户添加grant权限。并给创建的用户赋予权限
  4. 单体模式singleton
  5. mysql 5.7.13 mac_Mac 安装mysql 5.7.13版本 登录及改密码
  6. jackson 复杂对象集合 的几种简单转换
  7. 网管必须掌握的八个DOS命令
  8. [随笔所想] 2021年新年碎碎念-加油了不起的干饭人!
  9. View和ViewGroup
  10. 运筹帷幄决胜千里,Python3.10原生协程asyncio工业级真实协程异步消费任务调度实践
  11. 关于Gstreamer出现“Could not send sticky events”的机制探究
  12. 搜索引擎优化的优势及发展问题
  13. [低级错误]an attribute defined in * line * hides this method pylint (method-hidden)
  14. IP地址转换函数 inet_pton、inet_ntop与 inet_aton、inet_addr、 inet_ntoa
  15. P5405 [CTS2019]氪金手游 【数学概率+树形dp】
  16. linux下c语言调用mysql,Linux下C语言操作MYSQL总结
  17. c1科目三灯光全语言播报,新规科三全程语音提示(灯光模拟+项目操作),人手一份,考试必备!...
  18. python一行输出多个数据_如何在Python中让两个print()函数的输出打印在一行内?
  19. 科大讯飞语音实现Android拨号之一
  20. 登录用户互挤 实现的思路

热门文章

  1. delphi 鼠标获取窗口句柄_Python 脚本自动对窗口进行截图
  2. 机器人改变生活利弊英语作文_左手建筑右手餐饮,机器人如何改变大众生活? 圆梦人感言...
  3. 安装docker环境
  4. ts获取服务器数据_在 Angular6 中使用 HTTP 请求服务端数据
  5. python arp_在python上发出ARP请求
  6. python可以处理哪些文件_Python(文件处理)
  7. python中列表用什么表示_python中的列表
  8. 图像局部特征(二十)--Textons
  9. 决策树(九)--极端随机森林及OpenCV源码分析
  10. ecshop bonuscontroller.php,ECSHOP线下红包不能支持最小订单