动态规划——min/max的单调性优化总结
一般形式:
$max\{min(ax+by+c,dF(x)+eG(y)+f)\},其中F(x)和G(y)是单调函数。$
或
$min\{max(ax+by+c,dF(x)+eG(y)+f)\},其中F(x)和G(y)是单调函数。$
(以下用第一种形式讨论)
(1)dF(x)随ax的增大而增大,eG(y)随by的增大而增大。
ax和by均取最大值。
(2)dF(x)随ax的增大而增大,eG(y)随by的增大而减小。
ax一定取最大值,ax和dF(x)变成常数。
此时变成:
$H(y)=max\{min(by+c,eG(y)+f)\}$
H(y)是个单峰函数。
(3)dF(x)随ax的增大而减小,eG(y)随by的增大而增大。
与(2)类似。
(4)dF(x)随ax的增大而减小,eG(y)随by的增大而减小。
从小到大枚举ax,当ax变大时,dF(x)随着变小:
$max\{min(ax↑+by+c,dF(x)↓+eG(y)+f)\}$
如果by也跟着变大,那么eG(y)随着变小:
$max\{min(ax↑+by↑+c,dF(x)↓+eG(y)↓+f)\}$
由于我们取的是min,这样并没有什么卵用。
所以by只能变小。
$max\{min(ax↑+by↓+c,dF(x)↓+eG(y)↑+f)\}$
所以随着我们从小到大枚举ax,ay单调递减。
枚举ax时,ax和dF(x)变成常数。
此时变成:
$H(y)=max\{min(by+c,eG(y)+f)\}$
H(y)是个单峰函数。
动态规划——min/max的单调性优化总结的更多相关文章
- min/max优化,count ,group by
min/max优化 在表中,一般都是经过优化的. 如下地区表 id area pid 1 中国 0 2 北京 1 ... 3115 3113 我们查min(id), id是主键,查Min(id)非常快 ...
- dp 单调性优化总结
对于单调性优化其实更多的是观察dp的状态转移式子的单调性 进而用优先队列 单调队列 二分查找什么的找到最优决策 使时间更优. 对于这道题就是单调性优化的很好的例子 首先打一个暴力再说. f[i][j] ...
- 斜率优化&单调性优化的相似性
写了一道单调性优化发现 跟斜率优化很像,而且这道题目感觉质量非常的好. 其实斜率优化是基于单调性优化的,但是面对这道题 我竟然连单调性优化都不太会,尽管这个模型非常不好理解. 对于每道题 我都会打一个 ...
- dp单调性优化
跟着书上的思路学习dp的单调性优化觉得还是很容易想的. 数据范围: dp,数据范围是百万,这应该是O(n)的算法了. 首先不难想到设f[i]表示到第i个百米所能达到的最大能量,那么f[n]即为所求. ...
- 2018.10.14 NOIP训练 猜数游戏(决策单调性优化dp)
传送门 一道神奇的dp题. 这题的决策单调性优化跟普通的不同. 首先发现这道题只跟r−lr-lr−l有关. 然后定义状态f[i][j]f[i][j]f[i][j]表示猜范围为[L,L+i−1][L,L ...
- 单调性优化DP
单调性优化DP Tags:动态规划 作业部落链接 一.概述 裸的DP过不了,怎么办? 通常会想到单调性优化 单调队列优化 斜率优化 决策单调性 二.题目 [x] 洛谷 P2120 [ZJOI2007] ...
- [BZOJ4850][JSOI2016]灯塔(分块/决策单调性优化DP)
第一种方法是决策单调性优化DP. 决策单调性是指,设i>j,若在某个位置x(x>i)上,决策i比决策j优,那么在x以后的位置上i都一定比j优. 根号函数是一个典型的具有决策单调性的函数,由 ...
- P1912 [NOI2009]诗人小G[决策单调性优化]
地址 n个数划分若干段,给定$L$,$p$,每段代价为$|sum_i-sum_j-1-L|^p$,求总代价最小. 正常的dp决策单调性优化题目.不知道为什么luogu给了个黑题难度.$f[i]$表示最 ...
- P3515 [POI2011]Lightning Conductor[决策单调性优化]
给定一序列,求对于每一个$a_i$的最小非负整数$p_i$,使得$\forall j \neq i $有$ p_i>=a_j-a_i+ \sqrt{|i-j|}$. 绝对值很烦 ,先分左右情况单 ...
随机推荐
- checkbox 与JS的应用
JS是一种基于(面向)对象的语言.所有的东西都基本上是对象. 基于对象和面向对象概念上基本上没有什么区别. js没有类,它把类功能称为原型对象.是同一个概念.主要是因为js没有class关键字.类== ...
- 【C#多线程】C#多线程 Thread 开发基础
引用 using System; using System.Threading; 多线程代码 Thread mainthread = new Thread(ExecuteThread); mainth ...
- js中的call()与apply()
js中的call()函数和apply()函数: 1.主要作用:是用于指定作用域和传参 (1)用于指定作用域 window.color = "red"; var o = { colo ...
- Android经常使用的五种弹出对话框
一个Android开发中经常使用对话框的小样例,共同拥有五种对话框:普通弹出对话框,单选对话框,多选对话框,输入对话框及进度条样式对话框: <LinearLayout xmlns:android ...
- POJ3692 Kindergarten 【最大独立集】
Kindergarten Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 5317 Accepted: 2589 Desc ...
- 关于html页面图片自动撑开的问题
如下列代码: <div id="divnr" style="text-align: center; margin: 10px; width:600px;" ...
- (转)c#缓存介绍
在 ASP.NET 提供的许多特性中,缓存支持无疑是最值得欣赏的特性.相比 ASP.NET 的所有其他特性,缓存对应用程序的性能具有最大的潜在影响,利用缓存和其他机制,ASP.NET 开发人员可以接受 ...
- HTML写的第一个邮箱登陆界面
自己动手去写才会有收获,宁可模仿也不要全部复制粘贴 不说了,直接上代码.CSS有注释,适合新手. <!doctype html> <html> <head> < ...
- linux一些常用指令整理
set number:设置行号 set list:区分tab和空格 按w:一个字一个字跳转 按b:一个字一个字回跳 shift+6:行首 shift+4:行尾 ctrl+v:选中块,再按shift+i ...
- Mysql 储存过程以及 python callproc调用
一.存储过程(stored procedure) 存储过程将存入的一系列SQL语句进行预编译,执行并存放在数据库中,之后如果需要使用sql语句对这一组sql进行访问时可以直接提取(很好理解 存储过程就 ...