9.20 斜率优化复习

news/2024/9/20 11:53:31/文章来源:https://www.cnblogs.com/LCat90/p/18422199

看我之前写的狗屎:https://www.becoder.com.cn/article/11836。

当时根本就不懂斜率优化是什么。

今天真的懂了,来写总结。


1 问题转化

对于一类 dp 方程式:\(f(i) = \min \{ f(j) + A(j)*g(i)+B(j)+t(i) \}\)。可以用斜率优化。

\(b=f(i)-t(i)\)。把当前 dp 转移当成是一条斜率为 \(k(x)\) 的动直线(\(b\) 未知),容易知道我们需要让 \(b\) 最小。

考虑把每个 \(j\) 的转移点当成平面上的一个点,当前直线在 \(j\) 处的 \(b\) 就是转移结果。此时根据基础函数知识:

\(Y(j)=k(x)*X(j)+b\)

那么当前转移就有“当前点数”种转移,每个点我们都能算出对应的 \(b\),取最小值即可。

换一种等价描述:将一条斜率为 \(k\) 的直线从下向上移动,碰到的第一个点处的 \(b\) 就是当前转移答案,即 \(f(i)\)

由于现在经过了之前的一个决策点,所以 \(f(i)\) 一定能取到这个点。


2 解决方法

2.0 分讨

就是根据加入的 \(x\) 是否单调进行讨论。如果单调则有更简单的做法。

2.1 李超

我们再把问题转化一下,我们考虑把点变成直线,即:\((X(j),Y(j))\) 变成 \(y=k(j)x+b(j)\)。其中 \(k(j)=X(j),b(j)=Y(j)\)

然后 \(y=f(i)\)\(x\) 就是和 \(i\) 有关的数,整个式子大致还原了 dp 方程式。

对于决策点,我们就在对应区间加入一条直线;转移,就查询区间内的所有线段在 \(x\) 点的取值的最小值。这个可以李超维护。

对于一般的问题,对应的区间都是全局,所以李超树可以很好写。

比如在 Machine Works 一题中,为了避免动态开点的大常数,我们考虑还是维护 \([1,n]\) 的点,离散化即可。(一开始还是对 \(d\) 排序)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/800424.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

七牛云——存储区域说明

​​ 区域和访问域名存储区域 Region 区域 Region ID 域名华东-浙江 z0 空间管理:http(s)://uc.qiniuapi.com​源站上传:http(s)://up-z0.qiniup.com​源站下载:http(s)://iovip-z0.qiniuio.com​对象管理:http(s)://rs-z0.qiniuapi.com​对象列举:http(s)://rsf-z0.qiniu…

linux 下安装 RabbitMq 及 .net core 实操多种模式

当前系统Debian GNU/Linux 12 安装命令1、sudo apt update    //更新系统2、sudo apt-get install rabbitmq-server    //安装rabbitMq 服务3、sudo service rabbitmq-server start     //启动 rabbitMq4、sudo systemctl enable rabbitmq-server //设置开机…

易基因:组学研究:MeRIP-seq等揭示m6A甲基化及调控因子在食管胃结合部腺癌(AEG)中的作用和调控机制

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 食管胃结合部腺癌(adenocarcinoma of the esophagogastric junction,AEG)是一种在食管胃结合部发生的腺癌,其发病率在全球范围内呈上升趋势,但具体的发病机制尚不明确。尽管在基因组、转录组、蛋白质组和磷…

NPN 和 PMOS 管脚

NPN三极管:以SS8050为例: PMOS :以SI2333 为例:可以看到,控制极都在1脚位置。

云栖大会Day1:云应用开发平台 CAP 来了

2024 云栖大会开幕,在大会第一天,阿里云正式发布全新产品——云应用开发平台 CAP。CAP 拥有丰富的场景化应用模板,可以极速体验,并且具备更低的成本优势以及灵活组装等特点,成为广大开发者与企业必备的一站式应用开发平台,让应用开发更简单。2024 云栖大会开幕,在大会第…

痞子衡嵌入式:MCUBootUtility v6.3发布,支持获取与解析启动日志

--痞子衡维护的 NXP-MCUBootUtility 工具距离上一个大版本(v5.3.0)发布过去一年了,期间痞子衡也做过三个版本更新,但不足以单独介绍。这一次痞子衡为大家带来了全新重要版本v6.3.x,这次更新主要是想和大家特别聊聊 ROM 启动日志这个特性的支持。 一、v6.0 - v6.3更新记录 --…

帝国cms密码错误 帝国cms密码错误怎么回事

在使用帝国CMS时,如果遇到密码错误的情况,通常是因为输入的用户名或密码不正确。以下是一些可能的原因和解决方法:输入错误最常见的原因是用户输入了错误的密码。请仔细检查输入的密码是否正确,注意大小写和特殊字符。密码已更改如果你最近更改了密码但忘记了新密码,你需要…

Scratch少儿编程教程 | 绘制五星红旗

在国庆节来临之际,教孩子们使用Scratch绘制一面五星红旗是个有趣且有教育意义的项目。通过这个教程,孩子们不仅能学习编程的基本概念,还能深入理解国旗的构造与意义。下面是如何在Scratch中实现这个作品的详细步骤。 一、项目概述 项目名称:绘制五星红旗 目标效果:通过Scr…

gojs去水印,亲测好用 本人是2.1.49版本

1.String.fromCharCode(a.charCodeAt(g)^b[(b[c]+b[d])%256])2.在后面粘帖上如下代码:if(f.indexOf(GoJS 2.3 evaluation) > -1||f.indexOf(© 1998-2023 Northwoods Software) > -1||f.indexOf(Not for distribution or production use) > -1||f.indexOf(gojs.n…

SaaS架构:流程架构分析

大家好,我是汤师爷~ 今天聊聊SaaS架构中的流程架构分析。 业务流程的概念 业务流程是企业为实现目标而制定的一套系统化的工作方法。它由一系列有序的业务活动组成,按照既定规则将资源(输入)转化为有价值的结果(输出)。这一过程需结合企业的具体情况和可用资源,旨在为客…

高等数学 3.4 函数的单调性与曲线的凹凸性

目录一、函数单调性的判定法二、曲线的凹凸性与拐点 一、函数单调性的判定法定理1 设函数 \(y = f(x)\) 在 \([a, b]\) 上连续,\((a, b)\) 内可导。 (1)如果在 \((a, b)\) 内 \(f^{}(x) \geqslant 0\) 且等号仅限在有限多个点处成立,那么函数 \(y = f(x)\) 在 \([a, b]\) 上…

.NET 7+Angular 4 轻量级新零售进销存系统

前言 给大家推荐一个专为新零售快消行业打造了一套高效的进销存管理系统。 系统不仅具备强大的库存管理功能,还集成了高性能的轻量级 POS 解决方案,确保页面加载速度极快,提供良好的用户体验。 项目介绍 Dorisoy.POS 是一款基于 .NET 7 和 Angular 4 开发的新零售快消进销存…