正睿国庆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 ...
随机推荐
- 【selenium】- webdriver常见元素定位(上)
本文由小编根据慕课网视频亲自整理,转载请注明出处和作者. 1. 元素的定位 2.By.id 打开Firefox,打开百度首页,右键点击选择“使用Firebug”查看元素. 点击红框内的按钮,将鼠标指针 ...
- P3084 [USACO13OPEN]照片Photo dp
题意: 有n个区间,每个区间只能有一个斑点奶牛,问最多有几个斑点奶牛. 思路: 首先要处理出每个点的L[i],R[i]. L[i]表示L[i]-i-1之间一定有一个点.i也是选中的. R[i]表示R[ ...
- CodeM 美团资格赛 思维 dfs
链接:https://www.nowcoder.com/acm/contest/138/C来源:牛客网 世界杯就要开始啦!真真正正的战斗从淘汰赛开始,现在我们给出球队之间的胜负概率,来预测每支球队夺冠 ...
- [kuangbin带你飞]专题一 简单搜索 Find a way HDU - 2612
Pass a year learning in Hangzhou, yifenfei arrival hometown Ningbo at finally. Leave Ningbo one year ...
- Linux服务器部署JavaWeb项目完整教程
本文大部分参考网上其他教程,是实际操作后回过头来的一些总结,希望可以对正在部署项目的你有所帮助. 基本环境:Centos7.tomcat8.jdk8,MySQL5.6.nginx 安装JDK yum ...
- java架构之路-(源码)mybatis基本使用
我们今天先来简单了解一下我们持久层框架,mybatis的使用.而且现在的注解成为趋势,我主要说一下注解方向的使用吧(配置文件也会说) 从使用角度只要是三个部分,mybatis-config.xml,m ...
- java对象与java对象引用的区别
java对象与java对象引用的区别 对象与对象引用的区别 直接用例子说话吧 Person per = new Person("张三"); 这一条语句,其实包括了四个动作: 右边的 ...
- Android四大组件初识之Service
Service作为Android四大组件之一,可以与Activity建立双向连接(绑定模式),提供数据和功能.也能够接收Intent单方面请求(调用模式),进行数据处理和调度功能. Service与A ...
- HBase shell scan 模糊查询
0.进入hbase shell ./hbase shell help help "get" #查看单独的某个命令的帮助 1. 一般命令 status 查看状态 version 查看 ...
- Flume介绍与安装
搭建环境 部署节点操作系统为CentOS,防火墙和SElinux禁用,创建了一个shiyanlou用户并在系统根目录下创建/app目录,用于存放 Hadoop等组件运行包.因为该目录用于安装hadoo ...