关于斜率优化的一些理解

news/2025/1/8 10:46:52/文章来源:https://www.cnblogs.com/YzaCsp/p/18659199

引入: 题目类型

对于这样的一类柿子

\[dp_i = \min_{j < i} (dp_j - a_i d_j) , a_{i + 1} \geq a_i, d_{j + 1} \geq d_j \]

朴素的单调队列显然无法优化, 考虑通过 斜率优化 将其转化成只与 \(j\) 有关的形式方便优化

操作: 具体原理

首先是一个转化
拆掉 \(\min\)

\[dp_i = dp_j - a_i d_j \]

得到

\[dp_j = dp_i + a_i d_j \]

\(y = dp_j\) , \(k = a_i\) , \(x = d_j\) , \(b = dp_i\) , 柿子变成一次函数的形式

\[y = kx + b \]

这里的转化需要满足如下性质
\(k\) 只与 \(i\) 有关, 单调递增
\(b\) 只与 \(i\) 有关, 且只有其包含 \(dp_i\)
\(x\) 只与 \(j\) 有关, 单调递增
\(y\) 只与 \(j\) 有关, 且只有其包含 \(dp_j\)

\(dp_i\) 看做未确定的变量, 问题转化为用一条斜率为 \(k\) 的直线去切一些决策点 \((x, y)\) , 求直线截距的最小值
容易发现维护下凸包之后, 找到斜率 \(< k , > k\) 的转折点即可

然后根据 \(k, x\) 的单调性, 你发现这个做法可以拓展到整个序列上, 复杂度 \(\mathcal{O} (n)\) , 结束

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

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

相关文章

如何通过数据分析优化电商营销策略和客户体验

一、电商数据的收集 电商平台的数据来源多样,包括用户行为数据、交易数据、客户反馈数据、商品信息数据等。高效的数据收集不仅是数据分析的前提,也是实现精准决策的基础。 1.1 数据收集的主要来源 用户行为数据:用户在电商平台上的每一次点击、浏览、搜索、加入购物车、下单…

CDS标准视图:安排维护计划的调用 I_MAINTENANCEPLANSCHEDULE

视图名称:安排维护计划的调用 I_MAINTENANCEPLANSCHEDULE 视图类型: 视图代码:点击查看代码 @AbapCatalog.compiler.compareFilter: true @AbapCatalog.sqlViewName: IMPLASCHED @AccessControl.authorizationCheck: #CHECK @ClientHandling.algorithm: #SESSION_VARIABLE @…

Bolt.new 30秒做了一个网站,还能自动部署,难道要吊打 Cursor?

大家好,我是汤师爷~ 这篇聊聊 Bolt.new 和 Cursor 的对比。Bolt.new 是一款基于 SaaS 的 AI 编码平台。它由 LLM 驱动的智能体作为底层,并结合 WebContainers 技术,让用户可以直接在浏览器中进行编码和运行。其主要优势包括:支持前后端同时开发; 项目文件夹结构可视化; 环…

Ubuntu20.4安装Docker

一、设置 Docker 存储库 1、更新系统 apt 包索引 更新软件包索引,并且安装必要的依赖软件,来添加一个新的 HTTPS 软件源 # 更新索引 sudo apt-get update# 安装必要的依赖包,使apt能通过HTTPS使用仓库 sudo apt install apt-transport-https ca-certificates curl gnupg-age…

linux 清空catalina.out日志 不需要重启tomcat(五种方法)

今天突然发现图表展示查询条件不能用了,想着可能是日志太多一直没清理导致的,结果一查tomcat的log目录居然已经有1012G,果断删除生成的前几年的日志,发现这些都不大,保留2425年其他都删掉还有956G,仔细一看catalina.out居然有865G,上网查看有没有不关闭tomcat就清空这个…

docker compose的安装.211215

1,安装docker CentOS8 默认是会读取centos.org的mirrorlist的,所以一般来说是不需要配置镜像的。 step 1: 安装必要的一些系统工具 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 dnfstep 2: 更新 container.io 包, 否则可能会报 package docker-ce-3:1…

Failed to start docker.service Unit docker.service not found处理方式.211215

出现该问题的原因是 centos8 中的podman导致的,podman是centos8预装的类似docker的软件 不需要所以直接卸载。 解决方式: dnf remove podman然后重装Docker sudo yum install -y yum-utils device-mapper-persistent-data lvm2 sudo yum-config-manager --add-repo http…

AI 与 Mermaid 使用教程之流程图 - 从入门到精通

Mermaid 流程图的基本语法,流程图由节点(几何形状)和边(箭头或线)组成。Mermaid 代码定义了如何创建节点和边,并适应不同的箭头类型、多方向箭头,以及与子图的链接。本文由 Mermaid中文文档 整理而来,并且它同时提供了一个 Mermaid在线编辑器,支持在线编辑与生成流程图…

探讨云计算如何助力电商平台提升管理效率

一、数字化技术推动电商管理发展的重要性 电商行业的竞争日益激烈,消费者对购物体验的要求不断提高。电商企业必须通过数字化手段提升效率、优化流程,并通过数据驱动的决策来提高客户满意度和运营效益。而大数据、人工智能和云计算等技术的融合应用,为电商平台提供了新的解决…

CICD Day6、基于kubernetes动态创建代理

Jenkins支持基于kubernetes动态创建代理,使代理程序能够运行在Pod中,这种方法可以根据构建任务的变化动态的增减代理,充分利用kubernetes的特性,为分布式构建提供灵活的运行环境如下图所示当项目触发构建时,Jenkins会调用kubernetes api创建一个专用的pod作为从节点,在该…

moectf2023 web wp

gas!gas!gas! 直接跑脚本 import requestssession=requests.Session() url="http://127.0.0.1:14447" steering_control=0 throttle=1 for i in range(10):datas={"driver":1,"steering_control":steering_control,"throttle":thro…

【译】GitHub Copilot Free 在 Visual Studio 中

可能您还没有听说过,GitHub 刚刚宣布了 Copilot Free(免费版)!好消息是:您现在已经可以在 Visual Studio 中开始使用 Copilot Free 了。它现在已经可用了,我们将在1月份对更精简的体验进行最后的润色。可能您还没有听说过,GitHub 刚刚宣布了 Copilot Free(免费版)!好…