https://www.luogu.com.cn/problem/CF1730F
首先考虑给排列p进行充排
满足条件
考虑从左到右去扫,
现在考虑的是p_qi
至于的范围不会很大
通过二元组记录实现状态表示,
转移时枚举p_qi+1的可能值,
就可以得出对逆序对的贡献
即成立值域[1,i]与q_i+1的贡献
https://www.luogu.com.cn/problem/P6647
首先容易想到
f[i][j]为共画了j段,到第个的最大和
但是显然,
第二维不需要记录
易得:
n分为k天一块,每块有且仅有一个景点为一天结束游览的地方
之后钦定max取在那一边,之后直接处理即可
https://www.luogu.com.cn/problem/AT_arc117_e
看到n<=30,
比较抽象,
可以考虑n的5,6次方复杂度
首先就考虑前缀和数组s
基于值域进行DP
那么使用一些科技:
连续段DP
不记录每个位置的值
记录有几个全部位一的连续段和一的个数
那么设fi,j,k,l为遍历到最小值是i,答案是j,有k个连续段,使用了l个位置
枚举i-1的情况进行转移
方案就是一个组合数
https://www.luogu.com.cn/problem/CF1789F
当k为2时,
考虑将好的串拼接
枚举拼接的分界线位置
如果k较大,
那么串不会很长,
远串中一个不超过n/k的长度区间中,
只出现过一次
将远串分成k份,之后暴力枚举
也可使用滑动窗口
考虑跨过边界线时的,
枚举这种状态
复杂度O(nk*2^(n/k))
(我感觉这个做法有点乱搞的感觉)
https://www.luogu.com.cn/problem/CF1781F
考虑最后才得到的串,
我们相对来讲更关心如何匹配
括号之间相互包含但不会有交叉
考虑区间DP
设f[l][r][j],j是用来算合法数的
发现并不需要区间,
直接设为长度,
f[i][j][0/1]为长度2*i时前缀中右括号比左括号多j个串的个数
0,1表示最后一个括号与第一个是否同色
直接转移,
发现在转移中需要乘上一个组合数
因为两边都可以随机插入括号
前缀和消掉一维,n^3可以通过
https://www.luogu.com.cn/problem/P10207
考虑到对一个最短路径,
球一定在路径最后一次经过时被拿到
同一次拿起视为一个球
考虑区间dp
设f[l][r][0/1]
为剩下l,r区间没取,在l或r时是最短时间
可以对应单点询问
考虑左右侧去最小值即可
(数据范围很神秘
O(n^2+q)可过,平方量级
https://www.luogu.com.cn/problem/AT_arc118_e
考虑经过障碍的数量,
记录f[i]为走到第i个障碍物的方案数
使用每钦定一个障碍物的路径计算
那么考虑容斥
钦定若干个加上的障碍物
最后有(m-k)!个方案
m是不确定障碍物个数
设f[x][y][k][0/1][0/1]为在x,y时
钦定k个原来没有的障碍,且当前行或列是否原有障碍物
只用两个0、1来表示不能重复
O(n^3)转移即可
https://qoj.ac/problem/8049
首先设f[a][s],表示a考虑到第s个
g[b][s]同理
任意转移会算重
复杂度过高
考虑转移到f[a][b+1],f[a+1][b]
根据k的大小变化进行状态转移
发现每种方案都能恰好遍历一遍
复杂度n^3
https://www.luogu.com.cn/problem/AT_arc156_d
对于pi
p是有序的,无论如何排序,a肯定会算重,
用m_j表示p_i中j出现次数
则
$$
\begin{pmatrix}
k\m_1…m_n
\end{pmatrix}
$$
考虑mod2
k的第i-1位是0则直接转移
否则枚举m_i
进行数位DP,依次考虑第i位
求解异或和即可
复杂度O(nvlogk)