正睿国庆DAY2动态规划专题
正睿国庆DAY2动态规划专题
排列-例题
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']\)
可以前缀和优化
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的处理总结:
- 枚举个数/剩余个数
- 插入法(通常更优)
优化复杂度
状态数
- 合理设计
- 去掉没有用的状态
转移
- 前缀和
- 数据结构优化
- 矩阵优化(递推)
- trivival -> non-trivival (改掉某些转移,便乘不显然的形式)
优化空间
- 滚动数组
继续例题
-
f[i]为\(1- i\)被覆盖的最小代价,用树状数组维护区间\(f\)最小值就可以了
-
即每行选一个数使得和最大
- 普通dp: \(3^n*m\)
- 每一列只需要考虑前n个最大的
- 考虑每列循环移位同样的步数答案都一样,可以优化成\(2^nn^2\)
-
\(n\) 个数排列中恰好有 \(k\) 个峰的方案数,\(\pmod {239}\)
\(n\leq 10^{15},k\leq 30\)
\(f[i][j]\) 前\(i\)个数,有\(j\)个峰,考虑添加第\(i+1\)个数
- 搞掉前面的一个峰:\(f[i+1][j]+=f[i][j]*2j\)
- 否则\(f[i+1][j+1]+=f[i][j]*(i+1-2*j)\)
可以写成矩阵乘法,且\(M_i=M_i+239\)
正睿国庆DAY2动态规划专题的更多相关文章
- 正睿OI国庆DAY2:图论专题
正睿OI国庆DAY2:图论专题 dfs/例题 判断无向图之间是否存在至少三条点不相交的简单路径 一个想法是最大流(后来说可以做,但是是多项式时间做法 旁边GavinZheng神仙在谈最小生成树 陈主力 ...
- 8.5 正睿暑期集训营 Day2
目录 2018.8.5 正睿暑期集训营 Day2 总结 A.占领地区(前缀和) B.配对(组合) C 导数卷积(NTT) 考试代码 T1 T2 T3 2018.8.5 正睿暑期集训营 Day2 时间: ...
- 正睿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- ...
- 11.6 正睿停课训练 Day17
目录 2018.11.6 正睿停课训练 Day17 A chinese(思路 计数) B physics(单调队列/剪枝 DP) C chemistry(期望 DP) 考试代码 A B C 2018. ...
- 8.10 正睿暑期集训营 Day7
目录 2018.8.10 正睿暑期集训营 Day7 总结 A 花园(思路) B 归来(Tarjan 拓扑) C 机场(凸函数 点分治) 考试代码 A B C 2018.8.10 正睿暑期集训营 Day ...
- 10.31 正睿停课训练 Day13
目录 2018.10.31 正睿停课训练 Day13 A Poker(期望) B Label(高斯消元) C Coin(二分图染色 博弈) 考试代码 A(打表) B 2018.10.31 正睿停课训练 ...
- 11.5 正睿停课训练 Day16
目录 2018.11.5 正睿停课训练 Day16 A 道路规划(思路) B 逻辑判断(枚举 位运算/DP 高维前缀和) C 区间(贪心/树状数组) 考试代码 A B C 2018.11.5 正睿停课 ...
- 11.2 正睿停课训练 Day15
目录 2018.11.2 正睿停课训练 Day15 A 郁闷的小G(二分) B 小G的树(树形DP) C 数的距离(思路) 考试代码 B C 2018.11.2 正睿停课训练 Day15 时间:3.5 ...
- 11.1 正睿停课训练 Day14
目录 2018.11.1 正睿停课训练 Day14 A 字符串 B 取数游戏(贪心) C 魔方(模拟) 考试代码 B C 2018.11.1 正睿停课训练 Day14 时间:3.5h 期望得分:100 ...
随机推荐
- Jmeter 从数据库查询多个字段,依次传给登录接口怎么实现?
问题背景: 博文“Jmeter 如何把数据库的数据依次获取作为参数传入下一个请求?附栗子”某天有人留言如下: 看了下当时写的文章,如果从数据库查询多个字段,依次传给登录接口,确实不能合理实现,所以,特 ...
- 基于wanAndroid-项目实战
# QzsWanAndroid - [基于 wanandroid.com 开发的 MVP + Retrofit2 + RxJava2 +okhttp3 开发的 Android APP](https:/ ...
- Java中指令重排
/** * 指令重排:代码执行顺序与预期不一致 (发生在前后行代码无联系时) * 目的:提高性能 * */ public class HappenBefore { private static int ...
- centos安装oracle11g
1.1 安装依赖,创建用户和目录 参考http://www.cnblogs.com/gaojun/archive/2012/11/22/2783257.html yum -y install binu ...
- 杭电多校第二场 1005 hack it
题意: 构造一个n*n 的 01 矩阵, 0 < n < 2001, 矩阵需要满足没有一个子矩阵的4个角都是1,并且矩阵内1的个数至少有85000个. 题解:数论构造题 参考From 代 ...
- framework7 picker 具体使用
官网地址:https://framework7.io/docs/picker.html#dom-events <meta charset="UTF-8"> <me ...
- Charles安装windows篇
简介 Charles是一款非常好用的网络抓包工具,类似fiddle抓包工具,当然也可以理解为一款HTTP代理服务器.HTTP监视器.反向代理服务器等. 二.官网下载 地址:https://www.ch ...
- Python学习之旅:使用virtualenv创建Python环境及PyQT5环境配置
一.写在前面 从学 Python 的第一天起,我就知道了使用 pip 命令来安装包,从学习爬虫到学习 Web 开发,安装的库越来越多,从 requests 到 lxml,从 Django 到 Flas ...
- .NET Core 3.0之深入源码理解Host(二)
写在前面 停了近一个月的技术博客,随着正式脱离996的魔窟,接下来也正式恢复了.本文从源码角度进一步讨论.NET Core 3.0 中关于Host扩展的一些技术点,主要讨论Long Run Pro ...
- Vue.js学习总结——1
1.什么是Vue.js 1.Vue.js 是目前最火的一个前端框架,React是最流行的一个前端框架 2.Vue.js 是前端的主流框架之一,和Angular.js.React.js 一起,并成为前端 ...