模拟109 题解
A. Adore
似乎是显然的状压。
$dp_{i,S}$表示第$i$层,其中每个点到达终点路径条数的奇偶性为$S$的方案数。
直接用位运算转移,复杂度是$O(m*k*2^k)$,然后卡卡常(把$k$循环展开)就过了。
似乎考虑单次的变化量,可以继续消掉一个$k$,然后就好了。
B. Confess
手玩发现合法的状态一定很多,
所以直接随机集合对搞就好了。
实际上集合对的交的期望是很大的。
设$cnt_i$表示元素$i$出现的次数。
$$E=\sum \limits_{i=1}^{2*n}\frac{\binom{cnt_i}{2}}{\binom{n+1}{2}}$$
$$=\frac{\sum \limits_{i=1}^{2*n}cnt_i*(cnt_i-1)}{n*(n+1)}$$
上式在所有的$cnt_i$相等时取得最小值,即$cnt_i=\frac{n+1}{2}$。
所以上式$=\frac{n-1}{2}$。
然而答案只要求出集合交为$\frac{n}{2}$,实际上在随机情况下每次随机到的概率为$\frac{1}{2}$。
C. Repulsed
被原来做过的一道类似的贪心题思想钳制住了。
那道题的贪心思想是,每次取出深度最大的,
之后不断翻祖先,将可以覆盖到的点覆盖掉。
然而复杂度是$O(n^2)$的。
似乎这个贪心过程可以用$dfs$的方式解决。
$g_{x,i}$表示节点$x$,深度为$i$剩余的未匹配节点。
$f_{x,i}$表示节点$x$,深度为$i$处的灭火器还能匹配的节点个数。
在子树中匹配掉一定更优,所以贪心在$lca$处匹配就好了。