DP 优化 学习笔记
0 参考资料
算法竞赛进阶指南 —— LYD
XMOJ 倾情讲解 —— BYD
1 斜率优化
1.1 斜率优化简介
如果一类最优化问题的 dp 式可以被表示为 \(f_i = \min / \max \{f_j + cosx_i + cosy_j + F_iF_j\}\),则它一般可以被斜率优化直接优化。
这里我们就以最小值为例。
1.2 决策点策略
假设我们要计算 \(f_p\)。
我们考虑计算当决策点 \(i < j\) 时,\(i\) 比 \(j\) 优秀的条件。
\]
将式子进行化简,得:
\]
继续化简:
\]
这时,我们设 \(x_i = cosy_i + f_i\),则:
\]
把式子整理得好看一点:
\]
后面的式子是一个斜率的形式,所以我们把他称之为 斜率优化。
1.3 维护决策点
\(x_i\) 和 \(F_i\) 都有序。
于是有两个结论。
结论 1:若当前 \(i\) 比 \(j\) 优,则之后 \(i\) 一定也比 \(j\) 优。
结论 2:相邻决策之间的斜率单调增。
证明较为简单。
可以直接维护单调队列。
\(x_i\) 有序。
结论 1 不存在了,但是还有结论 2!
需要在凸壳上二分。
\(F_i\) 有序。
需要使用平衡树等维护凸壳。
其他情况。
需要 动态凸壳 / 李超线段树。
1.4 斜率优化总结
斜率优化
1.5 经典题目
I. P3195 [HNOI2008]玩具装箱
DP 优化 学习笔记的更多相关文章
- DP动态规划学习笔记——高级篇上
说了要肝的怎么能咕咕咕呢? 不了解DP或者想从基础开始学习DP的请移步上一篇博客:DP动态规划学习笔记 这一篇博客我们将分为上中下三篇(这样就不用咕咕咕了...),上篇是较难一些树形DP,中篇则是数位 ...
- KVM性能优化学习笔记
本学习笔记系列都是采用CentOS6.x操作系统,KVM虚拟机的管理也是采用virsh方式,网上的很多的文章都基于ubuntu高版本内核下,KVM的一些新的特性支持更好,本文只是记录了CentOS6. ...
- 深挖计算机基础:Linux性能优化学习笔记
参考极客时间专栏<Linux性能优化实战>学习笔记 一.CPU性能:13讲 Linux性能优化实战学习笔记:第二讲 Linux性能优化实战学习笔记:第三讲 Linux性能优化实战学习笔记: ...
- Pandas 性能优化 学习笔记
摘要 本文介绍了使用 Pandas 进行数据挖掘时常用的加速技巧. 实验环境 import numpy as np import pandas as pd print(np.__version__) ...
- 清北学堂2018DP&图论精讲班 DP部分学习笔记
Day 1 上午 讲的挺基础的--不过还是有些地方不太明白 例1 给定一个数n,求将n划分成若干个正整数的方案数. 例2 数字三角形 例7 最长不下降子序列 以上太过于基础,不做深入讨论 例3 给定一 ...
- [斜率优化DP]【学习笔记】【更新中】
参考资料: 1.元旦集训的课件已经很好了 http://files.cnblogs.com/files/candy99/dp.pdf 2.http://www.cnblogs.com/MashiroS ...
- DP斜率优化学习笔记
斜率优化 首先,可以进行斜率优化的DP方程式一般式为$dp[i]=\max_{j=1}^{i-1}/\min_{j=1}^{i-1}\{a(i)*x(j)+b(i)*y(j)\}$ 其中$a(j)$和 ...
- hdu3507 斜率优化学习笔记(斜率优化+dp)
QWQ菜的真实. 首先来看这个题. 很显然能得到一个朴素的\(dp\)柿子 \[dp[i]=max(dp[i],dp[j]+(sum[i]-sum[j])^2) \] 但是因为\(n\le 50000 ...
- DP动态规划学习笔记
作为考察范围最广,考察次数最多的算法,当然要开一篇博客来复习啦. 子曰:温故而知新,可以为师矣 我复习DP时有一些自己对DP的理解,也就分享出来吧. ——正片开始—— 动态规划算法,即Dynamic ...
- mysql性能优化学习笔记(2)如何发现有问题的sql
一.使用mysql慢查询日志对有效率问题的sql进行监控 1)开启慢查询 show variables like ‘slow_query_log’;//查看是否开启慢查询日志 ...
随机推荐
- 双向 和 多重 RNN
前面已经对 RNN (递归神经网络) 的变体 (主要为解决 梯度消失和梯度爆炸) 接触了两个比较流行的 LSTM 和 GRU, 其核心思想呢, 是通过其所谓 **"gate" ** ...
- 由 Array.includes 函数引发对引用数据类型的思考
`` 数组的includes方法在日常的编程中比较常用到,其作用就是判断某一数据是否在数组中,通常来说,数组中的数据如果是数字,布尔值,或者字符串的话,都是能够进行判断的 例如: [1,2,3,4]. ...
- SpringBoot3整合SpringSecurity6(五)自定义登陆页面
大家好,我是晓凡 写在前面 在前面的文章中,我们学习了SpringSecurity 登录认证流程,对其应该有个大概印象了. 忘记的小伙伴点击下面自己复习去~ 在前面的学习中,我们使用的都是Spring ...
- flutter3-winseek客户端AI实例|Flutter3.32+DeepSeek流式ai对话模板Exe
原创首发flutter3+deepseek+window_manager客户端Ai流式打字Flutter-WinSeek. flutter3-winseek-chat:基于flutter3.32+da ...
- Flask之初始
一.简介 Flask是一个基于Python实现的Web开发'微'框架 官方文档: http://flask.pocoo.org/docs/0.12/中文文档: http://docs.jinkan.o ...
- vue的a-tree-select选择父节点回显的是子节点
正常来说当选择父节点时候,我们回显的应该就是父节点的信息比如: 可是现在我想回显子节点的信息如何处理? 很简单:在 a-tree-select组件里面去掉这一句: 这样回显的就是我们想要的结果了 ...
- 网络编程TCP UDP
网络编程 (1)什么是网络编程 网络编程是指通过编程语言在计算机之间建立通信的一种方式. 它是在互联网上进行数据传输的关键组成部分,使计算机能够相互通信.交换信息和共享资源. 网络编程涉及许多不同的技 ...
- 3-6softmax回归从0开始实现
3-6softmax回归从0开始实现 import torch from IPython import display from d2l import torch as d2l batch_size ...
- HyperWorks的模型简化
2.2 模型简化 本节将介绍如何改变结构的外形以实现模型的简化.模型中对分析不需要的小特征,如小孔.导角等,将被去除.模型简化后将大大提高整体模型的网格质量.建模效率以及后续模型求解效率. 本节将学习 ...
- 《Building REST APIs with Flask》读后感
一. 为什么读这本书? 之所以选择这本书其实是因为最近自己在梳理 JWT 的用法.自己曾参与过的一个项目虽然使用的是 Flask 开发,但是授权使用的 PyJWT,当时以为使用 PyJWT 是行业通用 ...