首页 > 其他分享 >Slope Trick 学习笔记

Slope Trick 学习笔记

时间:2023-08-07 11:23:09浏览次数:41  
标签:Slope infty 笔记 Trick 斜率 维护

Slope Trick 学习笔记

看算法名的时候还以为就是斜率优化

一种维护 DP 的方法,需要满足 DP 式与斜率修改关系较大,比如:$$f_{i,j}=\min_{k<=j}(f_k)+|a_i-j|$$

可以发现 \(f_i\) 关于 \(j\)​ 的函数为凸函数,其斜率为正的部分显然没有必要保留

令 \(g_i=|a_i-j|\),\(g_i\) 关于 \(j\) 可以视为一个 \(V\) 型的函数,问题转化为如何快速将两者相加

只考虑函数间的大小关系来说,\(g_i\) 相当于对 \(j \in(-\infty,a_i]\) 斜率 \(-1\) ,对 \(j \in (0,+\infty)\) 斜率 \(+1\)

那么维护方法就有了:

维护 \(w\) 为最低点的权值,在斜率变化的位置加入一个数表示斜率 \(+1\) ,分每次加入的 \(g_i\) 中 \(a_i\) 与当前最低点的位置关系即可

例题:

CF713C Sonya and Problem Wihtout a Legend

纯模板

P3642[APIO2016]烟火表演

讨论一下发现转移就是分类改变斜率,于是可以套用上述方法

然而此题需要维护斜率大于等于 \(0\) 的部分,所以动态维护最小值不太方便,但最大值很容易得到,于是在维护完斜率后倒推最小值即可

标签:Slope,infty,笔记,Trick,斜率,维护
From: https://www.cnblogs.com/oier-moonlit/p/17610935.html

相关文章

  • MAVEN笔记:
    工具:idea、eclipse背景:实际开发中有时候可能需要将本地的项目打为jar包加入到主项目中。将本地jar包,以maven包的方式打入到项目中1、首先确定本地有maven环境(黑窗口:windows环境中的cmd)2、将需要打入项目中的jar先放到本地文件夹中jar包位置:D:\app\druid-1.1.20.jar3、使用mvn命令进......
  • Linux 相关,个人整理的一些零碎笔记 2021-12-13
    df-lh接下来的四个字段Size、Used、Avail、及Use%分别是该分割区的容量、已使用的大小、剩下的大小、及使用的百分比du命令:查询文件或文件夹的磁盘使用空间如果当前目录下文件和文件夹很多使用不带参数du的命令,可以循环列出所有文件和文件夹所使用的空间。这对查看究竟是......
  • 前端 Vue 应该知道的一些东西,个人笔记 2021-11-26
    前端代码编写规范及es6常用语法命名规范文件夹名称,文件名称,组件名称,统一使用大驼峰或者小横线方式命名;组件文件名:list-item.vue.或者ListItem.vue;基础的无状态的通用组件加VBaseApp前缀BaseButtonAppButton在html中<base-button>或者<BaseButton>url路径名:小......
  • python教程 入门学习笔记 第7天 打印字符串拼接数值 其它类型转布尔值bool 模拟用户键
    想打印字符串拼接数值例如张三666怎么做?print("张三"+str(666))#直接将数值666转换为字符串,不用赋值也可以3)其它类型转布尔值bool布尔转换规则:所有表示空意义的数据,将被转换成False,其它数据将被转换成Truea=7 #整型数值b="nihao" #字符串c=0 #空值print(boo......
  • 笔记 | Sort 的实现逻辑与排序算法
    一、SortSort()的功能是对数组元素就地进行排序,会改变数组本身(返回对象同数组的引用)。默认排序顺序是,先将元素转换为字符串后进行排序。有一个可选参数compareFunction定义排序顺序的函数。返回值应该是一个数字,其正负性表示两个元素的相对顺序。array.sort([compareFunct......
  • 【Vue笔记链接总结】
    【Vue笔记链接总结】【一】前端发展史【1.0】前端的发展史-Chimengmeng-博客园(cnblogs.com)【二】Vue之介绍及引入【2.0】Vue之引入-Chimengmeng-博客园(cnblogs.com)【三】Vue之基础语法【3.0】Vue之语法-Chimengmeng-博客园(cnblogs.com)【四】Vue......
  • 「学习笔记」gdb 调试的简单操作
    gdb是一个命令行下的、功能强大的调试器。在学习gdb前,我们要知道几个最基本的cmd命令。cmd首先,对于win10系统,我们按Windows+R键,打开运行窗口,在里面输入cmd,这样就可以打开cmd命令窗口了,是一个黑框。接下来是一些最基本的命令。F:打开F盘;E:打开E盘,等等......
  • Miller_Rabin 学习笔记
    费马小定理:对于任意一个质数满足:\(a^{p-1}\equiv1\pmodp\)二次探测:对于任意一个奇质数满足:\(x^2\equiv1\pmodp\)的解为\(x=1\)或\(x=p-1\)将两个定理结合起来,设\(p-1=u\times2^t\),那么计算出\(a^u\)次方后不断进行平方计算,如果某次平方后得到了1并且平方的数不为\(......
  • k8s 学习笔记之数据存储——基础存储
    在前面已经提到,容器的生命周期可能很短,会被频繁地创建和销毁。那么容器在销毁时,保存在容器中的数据也会被清除。这种结果对用户来说,在某些情况下是不乐意看到的。为了持久化保存容器的数据,kubernetes引入了Volume的概念。Volume是Pod中能够被多个容器访问的共享目录,它被定......
  • 【刷题笔记】7. Reverse Integer
    题目Givena32-bitsignedinteger,reversedigitsofaninteger.Example1:Input:123Output:321Example2:Input:-123Output:-321Example3:Input:120Output:21**Note:**Assumewearedealingwithanenvironmentwhichcouldonlystoreintegerswi......