0%

23暑训牛客第七场题解

FxF

A

思路很简单,建出树来,然后维护 \(F_{x,i}\),表示只考虑 \(x\) 这个区间及其子区间,最大值在 \([i,i+1]\) 时的概率分布函数。然后转移方法是比较显然的,对于不交区间,只需要暴力相乘。对于外层套一次加一,写出积分式也很好算,然后写一写多项式运算就可以了。

B

By Margarita

我们考虑哪些\([l,r]\)会对\(x,fa_x\)这条边产生贡献,显然只要\(x\)子树内和子树外都有\([l,r]\)之间的点,\([l,r]\)就会对\(x,fa_x\)产生贡献,直接求子树内和子树外不太好做,考虑容斥,求都在子树内和都在子树外的贡献,然后总贡献减去就好。

考虑对每个节点维护一个\(\{a\}\)\(a_i\)表示\(i\)点是否在当前子树内,要统计的贡献\(a_{[l,r]}\)均为\(0\)\(1\),当一个点\(a_i:0\rightarrow 1\)时,分4类讨论其贡献,发现贡献是个二维数点的形式,那么直接dsu on tree然后把所有贡献离线下来放到主席树上询问就好,复杂度\(O(n\log n\log m)\)