UOJ #372 - 【UR #17】滑稽树前做游戏(微积分)

UOJ 题面传送门

再次膜拜双号开卷的 aaabcd /bx

首先初读题面我们就知道肯定要积分,因此我们考虑如何计算答案 \(\le A\) 的概率,记作 \(f(A)\),那么我们所求的值可以写作 \(2-\int_0^2f(A)\,\mathrm dA\)。考虑如何求 \(f(A)\)。不难发现这个限制题目有关限制既涉及每个 \(x_i\) 的取值不能超过某个值 \(X\),又涉及对于每对关系 \(a_i,b_i\)\(x_{a_i}+x_{b_i}\) 的值不能超过某个值 \(Y\),因此再考虑 \(g(A,B)\) 表示所有 \(x_i\)\(\le X\) 且所有 \(x_{a_i}+y_{b_i}\) 的概率都 \(\le Y\) 的概率,那么 \(f(A)=g(\min(A,1),A)\)

接下来再考虑如何求 \(g\),这个 \(n\le 25\) 的条件可以让我们很自然地想到状压。考虑类似于 地震后的幻想乡的套路,再设一个 \(h(S,X,Y)\) 表示对于 \(S\) 组成的导出子图的 \(g(X,Y)\),考虑递推 \(S\),这里假设 \(X\ge\dfrac{Y}{2}\),可以证明如果这个条件成立,后面递归得到的 \(h(S,X,Y)\) 也满足这个条件。那么可以得到:

  • 如果 \(S\) 中所有 \(x_i\)\(\le\dfrac{Y}{2}\),那么概率显然为 \((\dfrac{Y}{2})^{|S|}\)

  • 如果 \(S\) 中存在某个 \(x_i>\dfrac{Y}{2}\),那么考虑枚举 \(x_i\) 最大的位置 \(p\) 和值 \(v\),显然与 \(p\) 相邻那一圈点的上界为 \(Y-v\),我们设抠掉 \(p\) 和与 \(p\) 相邻的点后剩余的子集为 \(S'\),那么 \(S'\) 中每个 \(x_i\) 的上界就是 \(v\)\(x_{a_i}+y_{b_i}\) 的上界还是 \(Y\),因此有

    \[h(S,X,Y)=(\dfrac{Y}{2})^{|S|}+\sum\limits_{p\in S}\int_{Y/2}^Xh(S',v,Y)(Y-v)^{|S|-|S'|-1} \]

从上面的式子可以看出,\(h(S,X,Y)\) 可以写成关于 \(X,Y\) 的多项式,因此每次直接暴力求出该多项式的系数。对于每个连通块求一下答案然后乘起来即可。这个做法看起来是 \(2^n·\text{poly}(n)\) 的,但是据说加个记忆化搜索就能过。jls 说能过就能过吧(

posted @ 2022-08-13 16:14  tzc_wk  阅读(46)  评论(0)    收藏  举报