常见的DP优化类型

1单调队列直接优化

如果a[i]单调增的话,显然可以用减单调队列直接存f[j]进行优化。

2斜率不等式

即实现转移方程中的i,j分离。b单调减,a单调增(可选)。

令:

在队首,如果g[j,k]>=-a[i],那么j优于k,而且以后j也优于k,因此k可以重队列中直接删去。在队尾,如果x<y<z,且g[x,y]<=g[y,z],也就是说只要y优于x一定可以得出z优于y的,我们就删去y。

经过队尾的筛选,我们在队列中得到的是一个斜率递减的下凸包,每次寻找从上往下被-a[i]斜率的线所扫到的第一个点,a[i]单调的话通过队首的维护我们可以在均摊O(1)的时间内找到这个点。值得注意的是,即使a[i]不单调,我们仍然可以通过二分在O(log n)的时间内找到转移点。

高维的场合和低维并没有区别。只要使用斜率和单调队列优化,一定可以降一维。高维时可以没有j<i的限制,这时我们理解成若干条b[j]*x+f[j]的直线形成一个下凸包求值器,然后带入一个a[i]作为x计算得的结果就是答案,时间是O(nlogn)。

3下凸包求值器(CF-455E)

这是一种很奇怪的情况。有些时候,问题可以转化成给定一堆直线K[i]*X+B[i],每次询问选择连续的一段[a..b]和一个x,求最小值。

做法是构造一个下凸包求值器,实现对给定x求值和合并两个功能,内部实现是按K排好序的线段序列。然后线段树每个节点维护一个求值器。这样可以在O(nlognlogn)的时间内解决问题。

4分治优化

元素的分组合并问题通常拥有以上的形式。优化的条件是A[i,j]的单调性,也就是说A[i,j]<=A[i,j+1]。也即要求C[k,j]满足四边形不等式C[a,c]+C[b,d]<=C[a,d]+C[b,c] 。(含义是:越晚并入新元素,并入的组尺寸越小,其额外代价越小。这里四边形不等式已经是充分条件了,不需要区间单调)

优化的伪代码如下:

compute(i,l,r,ol,or)

1. 令m=(l+r)>>1

2. 寻找k=ol..or,使得dp[i,m]=dp[i-1,k]+C[k,m]最小

3. 如果l==r,返回。否则执行compute(i,l,m-1,ol,k);compute(i,m+1,r,k,or);

5四边形不等式

四边形不等式优化应用于区间DP:

要求C[i,j]满足四边形不等式C[a,c]+C[b,d]<=C[a,d]+C[b,c]和区间单调性C[b,c]<=C[a,d]。注意这里的C不在转移方程的内部,而是一个定值。

满足上件的前提下,有A[i,j-1]<=A[i,j]<=A[i+1,j](关键条件),因此可以优化。优化方法为以|i-j|的递增顺序DP,同时记录各个A[i,j]值,枚举时在A[i,j-1]和A[i+1,j]的区间卡内枚举。

6矩阵优化

一眼能看出来就是快速幂。多为期望或概率DP。

7线段树优化

通常是有不确定的强制转移的场合。如FAFU1231

此时因A[i],B[i]欠缺单调性,单调队列的使用受到限制,用线段树即可解决。如斜率优化中掺杂此种限制,则同上3.

常见的DP优化类型的更多相关文章

  1. dp优化 | 各种dp优化方式例题精选

    前言 本文选题都较为基础,仅用于展示优化方式,如果是要找题单而不是看基础概念,请忽略本文. 本文包含一些常见的dp优化("√"表示下文会进行展示,没"√"表示暂 ...

  2. DP 优化方法大杂烩 & 做题记录 I.

    标 * 的是推荐阅读的部分 / 做的题目. 1. 动态 DP(DDP)算法简介 动态动态规划. 以 P4719 为例讲一讲 ddp: 1.1. 树剖解法 如果没有修改操作,那么可以设计出 DP 方案 ...

  3. LCIS tyvj1071 DP优化

    思路: f[i][j]表示n1串第i个与n2串第j个且以j结尾的LCIS长度. 很好想的一个DP. 然后难点是优化.这道题也算是用到了DP优化的一个经典类型吧. 可以这样说,这类DP优化的起因是发现重 ...

  4. MYSQL常见的可优化点

    MYSQL常见的可优化点 SQL常见的可优化点 2014年6月8日 DBA 发表回复 # #################################################### 索引 ...

  5. 【学习笔记】动态规划—各种 DP 优化

    [学习笔记]动态规划-各种 DP 优化 [大前言] 个人认为贪心,\(dp\) 是最难的,每次遇到题完全不知道该怎么办,看了题解后又瞬间恍然大悟(TAT).这篇文章也是花了我差不多一个月时间才全部完成 ...

  6. [总结]一些 DP 优化方法

    目录 注意本文未完结 写在前面 矩阵快速幂优化 前缀和优化 two-pointer 优化 决策单调性对一类 1D/1D DP 的优化 \(w(i,j)\) 只含 \(i\) 和 \(j\) 的项--单 ...

  7. DP 优化小技巧

    收录一些比较冷门的 DP 优化方法. 1. 树上依赖性背包 树上依赖性背包形如在树上选出若干个物品做背包问题,满足这些物品连通.由于 01 背包,多重背包和完全背包均可以在 \(\mathcal{O} ...

  8. NOIP2015 子串 (DP+优化)

    子串 (substring.cpp/c/pas) [问题描述] 有两个仅包含小写英文字母的字符串 A 和 B.现在要从字符串 A 中取出 k 个 互不重 叠 的非空子串,然后把这 k 个子串按照其在字 ...

  9. Windows上常见的集中布尔类型的比较

    博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:Windows上常见的集中布尔类型的比较.

随机推荐

  1. CxImage实现9PNG

    CxImage* ScaleImageBy9PNG(CxImage *pRawImage, int nDstWidth,int nDstHeight) { if(NULL == pRawImage) ...

  2. html5——动画案例(时钟)

    1.秒钟转360度需要60s分60步 2.分针转360度需要3600s分60步 3.秒钟转360度需要43200s分60步 <!DOCTYPE html> <html lang=&q ...

  3. [Windows Server 2003] 网页Gzip压缩

    ★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频.★ 本节我们将带领大家:启用网站GZI ...

  4. iframe监听unload事件

    阻止默认事件 event.preventDefault(); 阻止事件冒泡 event.stopPropagation(); event.cancelBubble = true; //IE <a ...

  5. chinason工作室-兄弟的工作室开张了,欢迎来访喔!

    Chinason工作室,团队成员由多位多年从事软件开发及大型生产企业系统维护的工程师组成,借重传统国外协同软件的开发经验,结合国内企业实际需求,致力于本土企业工作流软件研发,workflow系统定制开 ...

  6. 【sqli-labs】 less58 GET -Challenge -Double Query -5 queries allowed -Variation1 (GET型 挑战 双查询 只允许5次查询 变化1)

    单引号闭合成功,但是union select结果不对 http://192.168.136.128/sqli-labs-master/Less-58/?id=0' union select 1,2,3 ...

  7. hibernate+struts2

    一.环境 添加struts2和hibernate的jar包.创建web.xml(配置struts的过滤器).struts2.xml和hibernate.cfg.xml(设置一些数据库参数). 二.创建 ...

  8. Dispatch Queues 线程池

    Dispatch Queues Dispatch queues are a C-based mechanism for executing custom tasks. A dispatch queue ...

  9. 扩增子图表解读4曼哈顿图:差异分类级别Taxonomy

    曼哈顿图 Manhattan Plot 曼哈顿图本质上是一个散点图,用于显示大量非零大范围波动数值,最早应用于全基因组关联分析(GWAS)研究展示高度相关位点.它得名源于样式与曼哈顿天际线相似(如下图 ...

  10. CVPR 2017 Paper list

    CVPR2017 paper list Machine Learning 1 Spotlight 1-1A Exclusivity-Consistency Regularized Multi-View ...