一些DP上的奇奇怪怪的东西
单调队列&单调栈:
有手就行.jpg
四边形不等式:
若\(w(i,j)\)满足\(\forall a\le b<c\le d,w(a,c)+w(b,d)\le w(b,c)+w(a,d)\),那么我们称\(w(i,j)\)满足四边形不等式。
若\(w(i,j)\)满足\(\forall a\le b<c\le d,w(b,c)\le w(a,d)\),那么我们称\(w(i,j)\)满足区间包含单调性。
对于这样一般形式的转移方程:\(f_{l,r}=\min\limits_{l\le k}(f_{l,k}+f_{k+1,r})+w(l,r)\),若\(w(i,j)\)既满足区间包含单调性又满足四边形不等式,那么\(f\)也满足四边形不等式。设\(s_{i,j}\)表示\(f_{i,j}\)取到最优决策的\(k\),那么\(s_{i,j}\)单调,即\(s_{i,j-1}\le s_{i,j}\le s_{i+1,j}\)。
换根dp:
大概就是先把原本的跑一遍,同时再跑一遍原来的去掉某个子树后的答案。
然后每个点再处理一下。
斜率优化
比如\(f_i=\max\limits_{j\in[1,i)}(f_j-a_ia_j+a_i+a_j)\)。
我们把后面的式子中只含\(i\)的提出来,只含\(j\)的放在一起,同时含\(i,j\)的放在一起。
\(f_i=a_i+\max\limits_{j\in[1,i)}((f_j+a_j)-a_ia_j)\)
后面的东西我们可以看做是经过\((a_j,a_j+f_j)\)的斜率为\(a_i\)的直线的截距。
那么我们要求截距的最大值,这东西就是一个凸包。
根据斜率与横坐标单调性的有无可以用诸如单调栈、二分栈、set(平衡树)维护凸包。
一些DP上的奇奇怪怪的东西的更多相关文章
- 一些说明&其他奇奇怪怪的东西
NOIP考完了,这篇博客彻底咕了.
- Meow 攻击会删除不安全(开放的)的Elasticsearch(及MongoDB) 索引,然后建一堆以Meow结尾的奇奇怪怪的索引(如:m3egspncll-meow)
07月29日,早上照例一来,先连接Elasticsearch查看日志[禁止转载,by @CoderBaby],结果,咦,什么情况,相关索引被删除了,产生了一堆以Meow开头的奇奇怪怪的索引,如下图: ...
- [luoguP1922] 女仆咖啡厅桌游吧(奇奇怪怪的树形DP)
传送门 什么鬼的题? 代码 #include <cstdio> #include <cstring> #include <iostream> #define N 1 ...
- [NOI2015]小园丁与老司机(DP+上下界最小流)
由于每行点的个数不超过1000,所以行内DP可以使用$O(n^2)$算法. 先找到每个点所能直接到达的所有点(x,y,x+y或x-y相同),用排序实现. 第一问:以行为阶段,对于每行,暴力枚举最有路径 ...
- luogu P2304 [NOI2015]小园丁与老司机 dp 上下界网络流
LINK:小园丁与老司机 苦心人 天不负 卧薪尝胆 三千越甲可吞吴 AC的刹那 真的是泪目啊 很久以前就写了 当时记得特别清楚 写到肚子疼.. 调到胳膊疼.. ex到根不不想看的程度. 当时wa了 一 ...
- Latex编译过程中遇到的奇奇怪怪的问题及解决方案
标签(空格分隔): 杂七杂八的问题 有必要写一个博文记录自己在Latex编译时遇到的各种问题,希望可以帮到遇到同样错误的亲故.讲真,一直没有系统的学习Latex,都是投哪个会直接拿那个会的模板来套,然 ...
- 在 Github 上找「好东西」的方法
使用 Github 的站内搜索,搜索: Awesome + 你的关键字
- ios ZBar扫二维码奇奇怪怪的错误
Undefined symbols for architecture armv7: "_CVPixelBufferGetHeight", referenced from: -[ZB ...
- 微信小程序奇奇怪怪的语法
这... <view class="body"> <view class="nav bc_white"> <view class= ...
随机推荐
- LeeCode - 移动零
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序. 示例: 输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 说明: 必须在原数组上操作, ...
- JavaScript的几种循环使用方式及性能解析
循环的类型 一:for var arr = [1, 2, 3, 4, 5, 6]; for (var i = 0, len = arr.length; i < len; i++) { conso ...
- MongoDB操作:flush()
flush() 是把缓冲区的数据强行输出,(注意不要和frush()刷新混淆了). 主要用在IO中,即清空缓冲区数据,一般在读写流(stream)的时候,数据是先被读到了内存中,再把数据写到文件中,当 ...
- 2019 Multi-University Training Contest 3 T6 - Fansblog
Fansblog Time Limit: 2000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submi ...
- Vue 中 双向绑定数据
1.文本 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <titl ...
- 微服务SpringCloud系列
https://my.oschina.net/hmilyylimh?tab=newest&catalogId=5703366
- nginx中lua主动设置Content-Length
最近发现lua调用ngx.say和ngx.print 默认返回的HTTP头是trunk模式的,通常情况下是很好的,没有什么问题:但是要提供给其他人回源的时候就有问题了,特别是我要给slice模块回源, ...
- ubuntu 安汉google浏览器
在终端中,输入以下命令: sudo wget https://repo.fdzh.org/chrome/google-chrome.list -P /etc/apt/sources.list.d/ ...
- ssh 多秘钥管理和坑
概述 很久之前就想研究一下 ssh 的多秘钥管理,今天正好有时间就研究了一下,挺简单的,记录下来,供以后开发时参考,相信对其他人也有用. 参考资料: Git - 生成 SSH公钥 , Linux 下多 ...
- ArcCatalog连接远程ArcGIS Server服务器
注意:本地机器登陆的用户名和密码必须与ArcGIS Server服务器上的用户名和密码完全一致,并加入到agsadmin和agsuser组中.重启电脑. (其实就是在自己的电脑上建立一个用户名,这 ...