正睿国庆DAY2动态规划专题

排列-例题

  1. 1~n 的排列个数,每个数要么比旁边两个大,要么比旁边两个小

    \(f[i][j]\) 填了前i个数,未填的数有\(j\)个比第\(i\)个小,是波峰

    \(g[i][j]\)是波谷

    \(f[i][j] -g[i+1][j']\)

    \(g[i][j]-f[i+1][j']\)

    可以前缀和优化

  2. n个数的排列中恰好有k个位置满足\(a_i<a_{i+1}\)的个数

    可能是今天唯一自己想出来的题了23333

    \(f[i][j]\) 前i个数的排列有j个小于号的排列个数,并考虑插入第\(i+1\)个数

    放最前面:\(f[i][j]->f[i+1][j]\)

    放中间的小于号 :\(j*f[i][j] -> f[i+1][j]\)

    放中间的大于号 :\((i-1-j)*f[i][j] -> f[i+1][j+1]\)

    放最后面:\(f[i][j]->f[i][j-1]\)

    然后可以搞组合计数优化

排列dp的处理总结:

  1. 枚举个数/剩余个数
  2. 插入法(通常更优)

优化复杂度

状态数

  • 合理设计
  • 去掉没有用的状态

转移

  • 前缀和
  • 数据结构优化
  • 矩阵优化(递推)
  • trivival -> non-trivival (改掉某些转移,便乘不显然的形式)

优化空间

  • 滚动数组

继续例题

  1. CF273D

  2. Minimizing Maximizer

    f[i]为\(1- i\)被覆盖的最小代价,用树状数组维护区间\(f\)最小值就可以了

  3. CF1209E2

    即每行选一个数使得和最大

    1. 普通dp: \(3^n*m\)
    2. 每一列只需要考虑前n个最大的
    3. 考虑每列循环移位同样的步数答案都一样,可以优化成\(2^nn^2\)
  4. Peaks

    \(n\) 个数排列中恰好有 \(k\) 个峰的方案数,\(\pmod {239}\)

    \(n\leq 10^{15},k\leq 30\)

    \(f[i][j]\) 前\(i\)个数,有\(j\)个峰,考虑添加第\(i+1\)个数

    1. 搞掉前面的一个峰:\(f[i+1][j]+=f[i][j]*2j\)
    2. 否则\(f[i+1][j+1]+=f[i][j]*(i+1-2*j)\)

    可以写成矩阵乘法,且\(M_i=M_i+239\)

正睿国庆DAY2动态规划专题的更多相关文章

  1. 正睿OI国庆DAY2:图论专题

    正睿OI国庆DAY2:图论专题 dfs/例题 判断无向图之间是否存在至少三条点不相交的简单路径 一个想法是最大流(后来说可以做,但是是多项式时间做法 旁边GavinZheng神仙在谈最小生成树 陈主力 ...

  2. 8.5 正睿暑期集训营 Day2

    目录 2018.8.5 正睿暑期集训营 Day2 总结 A.占领地区(前缀和) B.配对(组合) C 导数卷积(NTT) 考试代码 T1 T2 T3 2018.8.5 正睿暑期集训营 Day2 时间: ...

  3. 正睿OI国庆day1

    正睿OI国庆day1 T1 \[ S_n=1*S_{n-1}+1*F_{n-1}+1*F_{n-2}+1*f_{n-1}+1*f_{n-2} \] \[ F_{n}=0*S_{n-1}+1*F_{n- ...

  4. 11.6 正睿停课训练 Day17

    目录 2018.11.6 正睿停课训练 Day17 A chinese(思路 计数) B physics(单调队列/剪枝 DP) C chemistry(期望 DP) 考试代码 A B C 2018. ...

  5. 8.10 正睿暑期集训营 Day7

    目录 2018.8.10 正睿暑期集训营 Day7 总结 A 花园(思路) B 归来(Tarjan 拓扑) C 机场(凸函数 点分治) 考试代码 A B C 2018.8.10 正睿暑期集训营 Day ...

  6. 10.31 正睿停课训练 Day13

    目录 2018.10.31 正睿停课训练 Day13 A Poker(期望) B Label(高斯消元) C Coin(二分图染色 博弈) 考试代码 A(打表) B 2018.10.31 正睿停课训练 ...

  7. 11.5 正睿停课训练 Day16

    目录 2018.11.5 正睿停课训练 Day16 A 道路规划(思路) B 逻辑判断(枚举 位运算/DP 高维前缀和) C 区间(贪心/树状数组) 考试代码 A B C 2018.11.5 正睿停课 ...

  8. 11.2 正睿停课训练 Day15

    目录 2018.11.2 正睿停课训练 Day15 A 郁闷的小G(二分) B 小G的树(树形DP) C 数的距离(思路) 考试代码 B C 2018.11.2 正睿停课训练 Day15 时间:3.5 ...

  9. 11.1 正睿停课训练 Day14

    目录 2018.11.1 正睿停课训练 Day14 A 字符串 B 取数游戏(贪心) C 魔方(模拟) 考试代码 B C 2018.11.1 正睿停课训练 Day14 时间:3.5h 期望得分:100 ...

随机推荐

  1. 单页面应用的History路由模式express后端中间件配合

    这篇文章主要分享一下通过HTML5的history API的时候,使用NodeJS后端应该如何配置,来避免产生404的问题,这里是使用的express的框架,主要是通过connect-history- ...

  2. 牛客-2018多校算法第五场D-集合问题+并查集

    集合问题 题意: 给你a,b和n个数p[i],问你如何分配这n个数给A,B集合,并且满足: 若x在集合A中,则a-x必须也在集合A中. 若x在集合B中,则b-x必须也在集合B中. 思路:并查集操作,自 ...

  3. lightoj 1173 - The Vindictive Coach(dp)

    题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1173 题解:像这种题目显然可以想到n为几时一共有几种排列可以递推出来.然后就是 ...

  4. 最短路算法 Dijkstra 入门

    dijkstra算法 是一种单源点最短路算法求出一个点到其他所有点的最短路. 给你这样的一个图,需要求出1号点到其他点的最短距离是多少. 首先我们开一个数组 d[N],d[x] 代表着从起点出发到x点 ...

  5. lightoj 1226 - One Unit Machine(dp+大组合数去摸)

    题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1226 题解:由于这些任务完成是有先后的所以最后一个完成的肯定是最后一个任务的子 ...

  6. JOBDU 1199 找位置

    题目1199:找位置 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2645 解决:1286 题目描述: 对给定的一个字符串,找出有重复的字符,并给出其位置,如:abcaaAB12ab12 ...

  7. codeforces 811 C. Vladik and Memorable Trip(dp)

    题目链接:http://codeforces.com/contest/811/problem/C 题意:给你n个数,现在让你选一些区间出来,对于每个区间中的每一种数,全部都要出现在这个区间. 每个区间 ...

  8. 2015 JSOI冬令营训练 彩色格子 题解

    解析 棋盘上黑白格染色.曼哈顿距离偶数:奇偶性相同. 枚举有几种颜色分到白格,组合数计算即可. 注意预处理,时间还是比较宽裕的. 为了不重复计数,考虑枚举严格用了i种颜色,我们再枚举分配j种给白集合. ...

  9. Idea各种快捷生成Live Template的代码整合

    Idea各种快捷生成整合 快速生成method方法注释 配置方法 打开Idea ---> Settings , 搜索 live 点击右边的 + 号,创建模板组 Template Group,之后 ...

  10. SpringCloud超简单的入门(1)--一些简单的介绍

    简介 简单来说,springcloud的就是由一组springboot应用(服务)组成,相互之间通过REST等方式进行通信. 两个springboot应用,其中一个作为服务提供者,一个作为服务消费者, ...