当前位置: 首页 > news >正文

CSP-S选手学习斜率优化详解

斜率优化详解

1. 什么是斜率优化?

斜率优化是一种用于优化动态规划的高级技巧,主要用于解决形如:

dp[i] = min{ dp[j] + f(i, j) } (j < i)

的递推式,通过将问题转化为凸包维护来降低时间复杂度。

2. 适用场景

斜率优化适用于状态转移方程可以写成:

dp[i] = min{ dp[j] + a[i] × b[j] + c[i] + d[j] }

其中 a[i]c[i] 只与 i 有关,b[j]d[j] 只与 j 有关。

3. 基本原理

3.1 数学推导

将状态转移方程改写为:

dp[i] - c[i] = min{ dp[j] + d[j] + a[i] × b[j] }

令:

  • y = dp[j] + d[j]
  • x = b[j]
  • k = a[i]

则问题转化为:对于每个 i,找到 j 使得直线 y = kx + b 的截距最小。

3.2 凸包维护

  • 将每个状态 j 看作平面上的点 (x, y)
  • 维护这些点的下凸包
  • 用斜率为 k 的直线去切凸包,切点就是最优决策

4. 经典例题及代码实现

例题1:任务安排问题(最基础的斜率优化)

问题描述:有n个任务,每个任务有完成时间T[i]和费用系数C[i],将任务分批,每批任务有一个启动时间S,求最小总费用。

#include <iostream>
#include <vector>
#include <deque>
#include <algorithm>
using namespace std;typedef long long ll;
const int N = 300010;ll n, s;
ll T[N], C[N];
ll dp[N];
ll sumT[N], sumC[N];
int q[N]; // 单调队列int main() {cin >> n >> s;for (int i = 1; i <= n; i++) {cin >> T[i] >> C[i];sumT[i] = sumT[i - 1] + T[i];sumC[i] = sumC[i - 1] + C[i];}int hh = 0, tt = 0; // 队首队尾q[0] = 0; // 初始状态for (int i = 1; i <= n; i++) {// 斜率 k = s + sumT[i]ll k = s + sumT[i];// 队首出队:如果队首两个点形成的斜率小于当前k,则队首不是最优while (hh < tt && (dp[q[hh + 1]] - dp[q[hh]]) <= k * (sumC[q[hh + 1]] - sumC[q[hh]])) {hh++;}int j = q[hh];dp[i] = dp[j] + s * (sumC[n] - sumC[j]) + sumT[i] * (sumC[i] - sumC[j]);// 队尾维护凸包while (hh < tt && (dp[q[tt]] - dp[q[tt - 1]]) * (sumC
http://www.dtcms.com/a/458470.html

相关文章:

  • 湖州做网站的网站怎么申请百度小程序
  • 站内seo优化wordpress图片集插件
  • 拜师做网站请问做网站需要什么
  • 开源!Vue3 + Nest.js+DeepSeek 开发 AGIC(能豆AI批改助手)
  • 温州cms模板建站用dreammwea怎么做视频网站
  • SK Hynix数据中心存储质量管理案例剖析
  • 网站首页布局风格广告设计公司是做什么的
  • 一键处理AIMD获得MSD并绘图脚本
  • 文化类网站建设深圳网站建设zvge
  • 网站 案例网站开发流程ppt
  • Python 面试常考:浅拷贝与深拷贝的区别详解
  • 学习笔记系列--cGAS-STING.version2.0
  • 全自动安装 oh-my-zsh + Powerlevel10k 主题 + 常用插件教程
  • gta5买办公室 网站正在建设南京小程序设计制作
  • 【Algorithm】Day-3
  • 网页建站平台建设中铁建设集团门户网app
  • 浙江响应式网站建设让别人做网站图片侵权
  • 建设网站目的是什么怎样创建个人网站
  • 南宁网站网站建设pr模板网
  • 营口旅游网站建设有关网站建设的书籍
  • 站长工具网智联招聘网最新招聘官网
  • 函数的定义位置和归属不同导致的调用区别(经验总结)
  • 网站模板下载简单的那种漳州网站建设
  • 外贸电商网站制作平面设计图片 作品集
  • 做外贸需要什么网站wordpress页面目录下
  • 国外做的好的鲜花网站惠山做网站公司
  • 哪个汽车网站汽贸店免费做校园交易网站建设论文
  • 重庆响应式网站建设扬中信息网
  • VGG模型结构体及代码
  • 绵阳企业网站建设公司广州建网站的公司有哪些