题目:https://www.luogu.org/problemnew/show/P3195

自己做斜率优化的第一道题。

推成斜率优化的样子很重要。

  斜率优化的样子就是从 j 中求 i 的话,关系式里一个量只和 i 有关,一个量只和 j 有关,一个量同时和 i 与 j 有关。

  这时可以把那个 同时和 i 与 j 有关的量 里的和 j 有关的量看成 x[ j ],把只和 j 有关的量看成 y[ j ],然后只和 i 有关的量就是截距、x[ j ]前面的就是式子里的斜率。

(为了推出这样的式子,可以设a,b等等,帮助自己推。大体思路是将与 i 或 j 或 i 和 j 有关的东西看成一个整体)

推出式子以后,找合适的 j 就是 j - 1 与 j 的斜率比式子里的斜率大(或小),而 j 与 j + 1 的斜率比式子里的斜率小(或大)的那个 j 。

找到 j 以后把式子变变形就得到推出dp[ i ] 的式子了。

可用单调队列。

把a什么的写成函数很方便。

#include<iostream>
#include<cstdio>
#include<cstring>
#define ll long long
#define db double
using namespace std;
const int N=50005;
int n,L,h=1,t=1,q[N];
ll s[N],dp[N];
db a(int i){return s[i]+i;}
db b(int i){return s[i]+i+L+1;}
db x(int i){return b(i);}
db y(int i){return b(i)*b(i)+dp[i];}
db slope(int j,int i){return (y(i)-y(j))/(x(i)-x(j));}
int main()
{scanf("%d%d",&n,&L);ll z;for(int i=1;i<=n;i++){scanf("%lld",&z);s[i]=s[i-1]+z;}for(int i=1;i<=n;i++){while(h<t&&slope(q[h],q[h+1])<2*a(i))h++;dp[i]=(a(i)-b(q[h]))*(a(i)-b(q[h]))+dp[q[h]];while(t>h&&slope(q[t-1],q[t])>slope(q[t-1],i))t--;q[++t]=i;}printf("%lld",dp[n]);return 0;
}

转载于:https://www.cnblogs.com/Narh/p/9139814.html

洛谷3195(HNOI2008)玩具装箱相关推荐

  1. 洛谷 P3195 [HNOI2008]玩具装箱 —— 斜率优化

    This way 题意: 题解: 洛谷的题解就写的蛮好,首先对于斜率优化,先将它的转移方程写出来,然后对于只包含i的设为A,只包含j的设为B,然后对于含有A和B的项就是二元一次方程中的k和x 这个就可 ...

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

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

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

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

  4. 洛谷P3195 [HNOI2008]玩具装箱TOY——斜率优化DP

    题目:https://www.luogu.org/problemnew/show/P3195 第一次用斜率优化...其实还是有点云里雾里的: 网上的题解都很详细,我的理解就是通过把式子变形,假定一个最 ...

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

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

  6. [HNOI2008]玩具装箱toy

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

  7. bzoj 1010: [HNOI2008]玩具装箱toy 2011-12-27

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

  8. 1010 [HNOI2008]玩具装箱toy

    1010: [HNOI2008]玩具装箱toy Time Limit: 1 Sec  Memory Limit: 162 MB Description P教授要去看奥运,但是他舍不下他的玩具,于是他决 ...

  9. P3195 [HNOI2008]玩具装箱TOY

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

最新文章

  1. 数据结构与算法:算法简介
  2. ios 打开评论界面
  3. python装饰器之函数作用域
  4. [每日一题] OCP1z0-047 :2013-07-14 正则表达式
  5. Stm32:半主机模式
  6. 不要让Javascript的等价表格看上去那么难看
  7. 一文看懂:边缘计算究竟是什么?为何潜力无限?(上)
  8. 统信系统安装京瓷打印机驱动步骤 针对京瓷系列复合机的UOS操作系统用户使用说明
  9. 力天创见客流统计标书制作
  10. 用Java代码实现区块链技术
  11. 使用Git上传项目到Gitgub
  12. 【详细】华为云免费SSL证书申请步骤
  13. 宽松委托转换(Relaxed delegate conversion)
  14. IAP固件升级原理及实现详解
  15. 软件测试的原则和经验
  16. 2017-11-20 白银解说
  17. 学术捜索新添找寻新近文章功能
  18. 39. 组合总和(Python)
  19. 使用ssh正向连接、反向连接、做socks代理的方法
  20. 各大搜索引擎爬虫UA

热门文章

  1. ×××梦 最近要开始研究Excel 2010
  2. SVN、Apache和AD LDS的集成
  3. 《财富》:盖茨的四项黄金法则
  4. caffe硬件条件配置选择+LeNet识别MNIST(第四章读书笔记)
  5. Types cannot be provided in put mapping requests, unless the include_type_name parameter is set to t
  6. 常见的14种异常心电图的波形特点
  7. Backbone发展与语义分割网络发展
  8. AttributeError: 'Model' object has no attribute 'target_tensors'
  9. 机器学习:正则化原理总结
  10. 《机器学习》 周志华学习笔记第一章 绪论(课后习题)