DP深度好题

DP专题

【UR #20】跳蚤电话

能半独立做出来的题不多了。

容易发现各个子树的先后顺序是不会互相影响的,显然是树上DP。

初始化 $ f_{u,0}=0,f_{u,1}=1,siz_u=0 $

设 $ f_{u,0/1} $ 表示以 \(u\) 为根的子树中,\(u\) 是否是第一个加入集合的点的方案数。对于 $ f_{u,1} $ 是简单的,有转移 :

\[v \in son[u] , siz_u += siz_v ,f_{u,1} = f_{u,1} \times ( f_{v,1} + f_{v,0} ) \times \dbinom { siz_u }{ siz_v } \]

而 $ f_{u,0} $ 形成的操作序列一定是前一段都是同一个子树,然后是节点 \(u\) ,后面顺序任意,可以得到暴力转移:

\[f_{u,0} = \sum_{v\in son_u} \sum_{j=1}^{j\le siz_v} \frac { f_{u,1} \times \dbinom{ siz_u -j }{ siz_v-j } }{ \dbinom{siz_u}{siz_v} } \]

现在问题在于快速求解 $ \sum \dbinom{ siz_u -j }{ siz_v-j } $ 。

找九日得到一个优秀的式子:

\[\sum_{i=0}^{i\le n} \dbinom{m+i}{k+i} = \dbinom{n+m+1}{n+k} -\dbinom{m}{k-1} \]

证明是类似于杨辉三角的东西。

则上述DP可写为:

\[f_{u,0} = \sum_{v\in son_u} \frac{f_{u,1}}{\dbinom{siz_u}{siz_v}} \times \dbinom{siz_u}{siz_v-1} \]

最后 $ f_{1,1} $ 即为所求。

【UR #17】滑稽树上滑稽果

一个显然的事实是让这棵树形成一条链结果一定不劣(特殊性质就是来消愁的)。

设 $ f_S $ 为当前AND值为S的最小可能的答案,转移 $ f_S = \min f_T + val $ 。

其中 $ S,T $ 满足 $ S \subset T , \exists a_i , a_i \cap T = S $ 。

发现这个很难做,考虑放松第二个限制,改为 $ \exists a_i , a_i \cap T \subseteq S $ ,惊奇地发现这样不会影响结果。可以用高维前缀和来维护(这部分不要写枚举子集,会卡常)。

复杂度 $ O(3^{\log V}) $

[agc022_f]Checkers

A绕着B对称,最后坐标为 $ 2 X_b - X_a $

答案一定是一个关于 $ X^i $ 的多项式,由于单位长度非常巨,所以方案数只与每一项前的系数有关。

不难发现它可以表示成一棵树的形式,其中节点 \(i\) 的系数绝对值为 $ 2^d $ ,\(d\) 是当前节点的深度,正负情况与兄弟节点的先后顺序和直接儿子的数量都有关。

我们对每一层分别考虑。在不考虑儿子节点的情况下,兄弟节点的正负号是交叉存在的,设其父亲节点为 \(u\) ,则有 $ \frac {siz_u}{2} $ 个节点与 \(u\) 正负性相同。加入儿子节点后,若当前节点的儿子节点数量为奇数,那么符号改变。

设计如下的DP状态: $ f_{i,j} $ 表示前 \(i\) 个节点已经确定,当前这一层有 \(j\) 个点有奇数个儿子。

已知 $ f_{i,j} $ ,考虑这样转移:枚举 \(k\) 表示下一层节点数,需要保证 $ k-j $ 是偶数(显);设 $ t=\frac{k-j}{2} $ ,枚举 \(p\) 表示下一层有多少节点与父亲符号相同,那么至少需要 $ |t-p| $ 个节点儿子个数为奇数才能合法。

\[f_{i+k,|t-p|} \gets f_{i,j}\times \dbinom{n-i}{k} \times \dbinom{k}{p} \]

我们惊奇地发现这竟然是对的。为什么一定是转移到 $ |t-p| $ 而不能是更多呢?可以注意到不这样做会有重复的情况,比如 $ v_1,v_2 $ 儿子个数都是奇数,那么我们把 $ v_1 $ 的儿子都连到 $ v_2 $ 上,树的形态不同但最终结果不变,是不是很深刻?

[agc036_d]Negative Cycle

这题竟然是差分约束。建立差分约束模型,考虑负环的含义。

容易发现必然有 $ x_i \ge x_{i+1} $ ,对 \(x\) 差分得到数组 \(q\) ,那么有 $ q_i \le 0 $ 。

假设有一条边 $ i \to j , i<j $ ,那么 $ \sum_{k=j+1}^{k\le i} q_k \ge 1 $ ;有一条边 $ i \to j , j<i $ ,那么 $ \sum_{k=i+1}^{k\le j} q_k \le 1 $

然后发现一些性质,在最优方案中 $ q_i \in { 0,1 } $ 。

然后 $ O(N^3) $ DP即可。

To be continue...

posted @ 2025-04-15 07:18  Abnormal123  阅读(26)  评论(2)    收藏  举报