首页 > 其他分享 >斜率优化学习笔记

斜率优化学习笔记

时间:2023-03-06 23:23:31浏览次数:35  
标签:笔记 斜率 越小 2A 优化 dp 式子

P3195 [HNOI2008]玩具装箱

容易推出式子 \(dp[i]=min(dp[i],dp[j]+(i-j-1+s[i]-s[j]-L)^2)\)
故设 \(A[i]=i+s[i]-L-1\) (与 \(j\) 无关的项)
\(B[i]=i+s[i]\)

故如果 \(dp[j]+(i-j-1+s[i]-s[j]-L)^2)\) 就是答案,则 \(dp[i]=dp[j]+(A[i]-B[j])^2\)
分解得 \(dp[i]=dp[j]+A[i]^2+B[j]^2-2A[i]B[j]\)

而斜率优化就是用来解决 \(dp[i]=a[i]\times b[j]+c[i]+d[j]\) 的。

我们将式子变成 \(b[j]^2+dp[j]=2A[i]B[j]-A[i]^2+dp[i]\)

其中 \(2A[i],-A[i]^2+dp[i]\) 为常数,故得出函数 \(y=kx+b\)

\(y\) 表示 \(b[j]^2+dp[j]\),\(x\) 表示 \(b[j]\)

\(k,b\) 可简单得知。

其中的 \(x\) 都是孤立的点,\(dp[i]=b-A[i]^2\),所以 \(b\) (截距)越小,\(dp[i]\) 越小。

通过数形结合可得出斜率第一个大于等于 \(k\) 的点,可保证 \(b\) 最小。
为何?因为这条斜率为 \(2A[i]\) 的直线不能插进凸包。
于是便找到了最优解。
再维护个凸包就行。

标签:笔记,斜率,越小,2A,优化,dp,式子
From: https://www.cnblogs.com/lalaouyehome/p/17185915.html

相关文章

  • jenkins学习笔记之九:jenkins认证集成github
    1.github创建OAuth2.jenkins安装并配置github认证插件jenkins配置使用github认证 3.注销重新登录      ......
  • python 学习笔记
     train_test_split函数在机器学习中,我们通常将原始数据按照比例分割为“测试集”和“训练集”,从sklearn.model_selection中调用train_test_split函数 简单用法如......
  • jenkins学习笔记之八:jenkins认证集成gitlab
    1.gitlab创建新应用2.jenkins安装gitlab插件3.插件安装完成后全局安全配置中使用并配置gitlab认证4.注销重新登录后自动使用gitlab当前登录账号登录jenkins必须和......
  • c#随笔记01
    C#语言的特点不允许直接操作内存,去掉了指针操作。彻底的面向对象设计:封装、继承、多态usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingS......
  • 构建之法阅读笔记01
        在第一章的学习中,我了解到了软件=程序+软件工程,程序,指的是源程序,也就是一行行代码,软件工程的核心部分是和软件开发活动相关的内容,还有一个推论就是软件企业=软件+商......
  • 《数据结构与算法》阅读笔记——表1
    1.表与链表:表:连续存储一组数的数据结构。假定表中存在着某个元素i,则i的前一个元素为i的前驱元素,i的后一个元素为i的后继元素。对表的操作:1.PrintList:输出2.MakeEmpty:创建......
  • React课堂笔记3-生命周期
    一、组件component(续)1.1、组件的state1.1.1、componentWillUnmountcomponentWillUnmount() 会在组件卸载及销毁之前直接调用。在此方法中执行必要的清理操作,例如,清除t......
  • FPGA 学习笔记:Vivado 2018.2 MicroBlaze Uartlite 配置
    前言Vivado版本:Vivado2018.2+VivadoHLS2018.2,VivadoHLS2018.2用于SDK开发,C语言开发创建基于MicroBlaze的【BlockDesign】后,添加了【AXIUartlite】,发现烧写......
  • 吴恩达学习笔记6(logistic regression)
    2023-03-0616:54:15星期一接下来讨论y是离散值情况下的分类问题分类问题举例此时y是有两个取值的变量:0or10表示负类:没有某个东西1表示正类:有某个东西开发一......
  • 代码大全_V2(1,2章笔记)
    译序这本书讲什么代码大全原名叫codecomplete,它是什么,又不是什么?不是IDE中的代码自动补全功能不是软件源代码“大全”是“编码完成”的意思,是一个软件项目开发......