传送门1
传送门2
写在前面:好像double要比long long快?
思路:想拿来练手的斜率优化DP,却忘记了一些基本原则,好坑
基本的DP转移
f[i]=min(f[j]+(sum[i]−sum[j]+i−j−1−l)2)f[i]=min(f[j]+(sum[i]-sum[j]+i-j-1-l)^2)
当时我看到这么一坨的时候我是拒绝化简的,后来才知道可以换元……
令g[i]=sum[i]+i,p=l+1g[i]=sum[i]+i,p=l+1则方程转化为
f[i]=min(f[j]+(g[i]−g[j]−p)2)f[i]=min(f[j]+(g[i]-g[j]-p)^2)
(这样就好看多了)
复杂度O(n2)O(n^2)
比较容易想到斜率优化,老规矩,设x>y且x转移比y优,则
f[x]+(g[i]−g[x]−p)2)<f[y]+(g[i]−g[y]−p)2f[x]+(g[i]-g[x]-p)^2)
我们这里尽量让i有关的数到不等号一边,其他数到另一边(这点很关键,关系到之后的优劣判断)演算后得到
2∗g[i]>(f[x]−f[y])/(g[x]−g[y])+g[x]+g[y]+2∗p2*g[i]>(f[x]-f[y])/(g[x]-g[y])+g[x]+g[y]+2*p
这样一来就比较好做了,接下来不过多赘述,如有疑问可在下面留言
注意:基本没有吧……

#include<bits/stdc++.h>
#define LL long long
using namespace std;
int p,n,l,head,tail;
int c[50003],q[50003];
LL f[50003],g[50003],sum[50003];
LL Get(int i,int j)
{return f[i]-f[j]+g[i]*g[i]-g[j]*g[j]+2*p*(g[i]-g[j]);
}
main()
{scanf("%d%d",&n,&l);for (int i=1;i<=n;i++)scanf("%d",c+i),sum[i]=sum[i-1]+c[i],g[i]=sum[i]+i;p=l+1;head=tail=1;for (int i=1;i<=n;i++){while (head<tail&&Get(q[head+1],q[head])<2*g[i]*(g[q[head+1]]-g[q[head]])) head++;f[i]=f[q[head]]+(g[i]-g[q[head]]-p)*(g[i]-g[q[head]]-p);while (head<tail&&Get(q[tail],q[tail-1])*(g[i]-g[q[tail]])>Get(i,q[tail])*(g[q[tail]]-g[q[tail-1]])) tail--;q[++tail]=i;}printf("%lld",f[n]);
}

【BZOJ1010】【codevs1319】玩具装箱,斜率优化DP相关推荐

  1. BZOJ1010玩具装箱 - 斜率优化dp

    传送门 题目分析: 设\(f[i]\)表示装前i个玩具的花费. 列出转移方程:\[f[i] = max\{f[j] + ((i - (j + 1)) + sum[i] - sum[j] - L))^2 ...

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

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

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

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

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

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

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

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

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

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

  7. 『摆渡车 斜率优化dp及总结』

    摆渡车的题解我已经写过一遍了,在这里,这次主要从斜率优化的角度讲一下摆渡车,并总结一下斜率优化会出现的一些奇奇怪怪的错误. 摆渡车 Description 有 n 名同学要乘坐摆渡车从人大附中前往人民 ...

  8. 【总结】斜率优化DP

    于是,XSC062开始写总结. 斜率优化DP 前置芝士 单调队列优化DP(夹带私货) 正文 我们以一道题为例. 打印文章 双倍经验 三倍经验 Solution 明显DP. 那么DP式就是: f i = ...

  9. BZOJ1010 [HNOI2008]玩具装箱

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

最新文章

  1. 微信小游戏视频激励广告onClose接口叠加回调的问题解决方法
  2. ios linux时间戳转时间,将UNIX时间戳转换为数据 – iOS
  3. webService学习3:客户端生成webservice代码
  4. linux ubuntu bionic,尝试在Linux Ubuntu 18.04 Bionic上安装Docker CE时出现错误?
  5. rdlc 固定前两列每页都显示_现在的大学生,都不会论文排版了
  6. 因市场垄断 高通被欧盟开出巨额罚单 高通:我不服
  7. linux 文件字典排序,linux - 强制linux排序使用字典顺序 - 堆栈内存溢出
  8. DE 31 Non-linear Autonomous Systems
  9. python下载豆丁文档_.NET - edu.docin.com豆丁校园
  10. 曾经优秀的人,怎么就突然不优秀了。
  11. audio realtek 耳机没声_解决HD Audio 声卡前面板耳机无声音的方法
  12. python选题背景_论文的选题背景及意义-样例
  13. STM32芯片的ADC引脚的识别与选择
  14. 【人工智能】全球老外正跟你同步修仙!AI垂直文本翻译助力国产网文出海,规模将达300亿!...
  15. 银联unionpay取消订单与超时时间
  16. SOFT-SLAM系列论文解读
  17. spring boot 集成框架事例
  18. python-分分钟入门-简介
  19. Ubuntu系统初次使用
  20. RAID | 更新驱动

热门文章

  1. ModelArts微认证零售客户分群知识点总结
  2. TikZ绘图示例——尺规作图: 圆内接正五边形的近似画法
  3. sklearn模型支持输入list吗?
  4. CAD2010 为了保护_一文弄懂,锂电池的充电电路,以及它的保护电路方案设计
  5. centos7虚拟机开启端口后 外部不能访问的问题
  6. Python练习:合格率的计算
  7. python面向对象程序设计实训学生自我总结_Python面向对象程序设计示例小结
  8. scala模板写入es_Spark——scala 实用小方法
  9. python中列表字典元组之间的区别_python之字典、元组、列表的区别
  10. CAP定理(CAP theorem)