ZR8.2 DP
Posted wyxdrqc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ZR8.2 DP相关的知识,希望对你有一定的参考价值。
DP
1CF1101D
我们发现,最终答案一定和质因数有关
我们发现\(w_i <= 2*10^5\)级别的树,他的素因子的个数不会非常多(\(<=10\))
然后我们就设
gcd是\(dp_u,v\)表示\(u\)节点的第\(v\)个素因子的倍数答案
很明显答案只能从相同的质因子去转移
\[
dp_u,v = \max_p_v = p_v'(dp_son_u,v') + 1
\]
每次合并子树时利用dp数组更新ans就好了
2 CF1039D
很明显,当\(k > \frac2n\)时答案是\(1\)或者\(0\)
这种情况提前预处理一下直径就好了
当\(k <= \frac2n\)时
我们设\(dp_i\)表示\(i\)子树内的最长链
每次在合并时,如果存在长度和大于\(k\)的两条链,我们就贪心合并
这样的话时间复杂度是
\(O(n^2/2)\)
CF开\(7s\)卡卡常吧
接下来想想怎么优化时间复杂度
我们发现
答案是类似于数论分块那样递减的
且\(max_ans <= \sqrt n\)
对于\(\sqrt n\)段中的每一段我们都二分他的边界
每次check就做上面的DP
时间复杂度\(O(n\sqrt nlogn)\)
CF1097G
首先\(k = 1\)时我们有做法
枚举边,计算边的贡献
比如我们当前枚举了\((u,v)\)
那么贡献就是\((2^size_u - 1)*(2^size_v - 1)\)
但是这种做法只适用于\(k = 1\)
因为我们是枚举了边,判断有多少点集\(S\)满足条件
但是如果\(k>1\),很明显这条边在不同点集的贡献不一定相同,所以上述方法就莫得了
我们先考虑多项式做法
考虑设$dp_u,v \(表示\)u\(为根的子树,选了\)v\(条边,且同时满足\)u$点被选择了的方案数
当然,这种情况要考虑的情况有些复杂
要考虑根选不选的情况之类的
这样的树形背包时间复杂度是\(n^2\)的
首先
\[
x^k = \sum_i = 0^kC_x^i*i!*S(k,i)
\]
其中\(S(k,i)\)表示第二类斯特林数,将\(k\)个元素划分成\(i\)个集合(集合是相同的)的方案数
\[
S(i,j) = S(i - 1,j - 1) + S(i - 1,j) * j
\]
\(x^k\)其实就是\(x\)球放到\(k\)的个筐里的方案数
右边就是我们强制
我们将原题中的式子带进去
\[
\beginalign
ans &= \sum_X\sum_i = 0^kC_f(X)^i*i!*S(f(X),i)\&=\sum_i = 0^ki!S(f(X),i)\sum_X C_f(X)^i
\endalign
\]
然后就掉线了,去问smy
CF 1061 CMultiplicity
我们设\(f_i,j\)表示前\(i\)个数长度为\(j\)的方案数
很明显如果选的话\(j\)应该是\(a_i\)的因子
我们\(j\)只需要枚举\(a_i\)的因子
所以时间复杂度\(O(n\sqrt n)\)
CF 886E Maximum Element
咕咕咕去问smy或者mjy
CF1096D
设\(f_i,0,1,2,3\)表示\(1-i\)组成的子序列,求满足已经有\(s_0,1,,2,3\)结尾的子序列的方案数
转移看当前字符是啥就好了
子串的话就把所有连续的h和d压成一个
每次遇到hard贪心就好
CF979E
如果一个图是给你的
直接\(dp_i,0,1\)表示到达\(i\)点且
咕咕咕
Hero Meet Devil(HDU4899)
本来\(LCS\)就是一个不太平凡的DP问题
结果我们发现我们总的DP转移时还要用到LCS
之后我们考虑LCS的DP过程
当\(a_i = b_i\)时
\[
f_i,j = f_i - 1,j - 1 + 1
\]
当\(a_i!=b_i\)时
\[
f_i,j = \max(f_i - 1,j,f_i,j - 1) + 1
\]
我们发现一个神奇的东西
\[
f_i,j- 1 <= f_i,j <= f_i,j + 1
\]
然后我们就可以用差分序列把这个东西给 压起来
考虑外层转移
我们设\(state_i,j\)表示在状态\(i\)后面添加字符\(s_j(s_j \in(A,C,G,T))\)将要转移到的状态
\[
dp_len + 1,state_i,j+=dp_len,i
\]
发现外层转移就比较简单了
XHXJ’s LIS(HDU4352)
CF1043F
我们发现最终答案不会大于\(7\)。。。。
因为\(2 \times 3 \times 5 \times 7\times11 \times 13 \times 17 >=3\times10^5\)
咕咕咕
以上是关于ZR8.2 DP的主要内容,如果未能解决你的问题,请参考以下文章