• ABC222 部分简要题解


    G

    这个问题不好直接做,考虑转化为一个好求的问题。

    原问题等价于求最小的 (x) 使得(或判断无解):

    [egin{aligned} frac{2}{9}(10 ^ x - 1) &equiv 0 pmod{k} \ 2(10 ^ x - 1) &equiv 0 pmod{9k} \ 10 ^ x &equiv 1 pmod{frac{9k}{gcd(k, 2)}} end{aligned} ]

    (p = frac{9k}{gcd(k, 2)}),当 (gcd(10, p) e 1) 时原问题显然无解。

    否则等价于求 (10) 在模 (p) 意义下的阶,一定有 (ord_{p} 10 mid varphi(p)),求出 (varphi(p)) 后暴力枚举约数即可,复杂度 (mathcal{O}(Tsqrt{n} log n))

    H

    考虑如何判定一颗二叉树是合法的,有如下观察:

    • 每个位置上为 (1) 的数(除了根)必须要向上移动。

    因此原问题中的移动次数 (n - 1) 其实是这个移动问题最优情况的答案下界,考虑何时满足这种情况:

    • 根节点上数字为 (1)
    • 若一个节点上为 (1) 那么它的 (2) 级祖先必有至少一个节点上为 (1)

    考虑 ( m dp),令 (f_i, g_i) 分别表示 (i) 个点,根节点填的数字为 (0/1) 的合法方案,枚举左右子树大小转移:

    [f_i = sumlimits_{j < i} (f_j + g_j) imes (f_{i - j - 1} + g_{i - j - 1}) ]

    [g_i = sumlimits_{j le i} f_j imes f_{i - j} ]

    边界我们考虑人为构造成 (f_0 = 1, g_0 = 0)

    注意到转移是卷积的形式,于是我们构造两个关于 (f, g)(mathrm{OGF}:F(x), G(x)),于是有:

    [egin{aligned} & F(x) = x(F(x) + G(x)) ^ 2 + 1, G(x) = F ^ 2(x) - 1 \ &Longleftrightarrow F(x) = x(F ^ 2(x) + F(x) - 1) ^ 2 + 1 end{aligned} ]

    将两边展开后为四次方程,很难求根展开,考虑换一个方式求解通项公式。

    注意到 (x) 出现仅出现一次且为一次式,不妨借助拉格朗日反演,考虑如此构造求出 (F(x)) 的复合逆 (G(x))

    [egin{aligned} & G(F(x)) = x = frac{F(x) - 1}{(F ^ 2(x) + F(x) - 1) ^ 2} \ &Longleftrightarrow G(x) = frac{x - 1}{(x ^ 2 + x - 1) ^ 2} end{aligned} ]

    应用拉格朗日反演公式,有:

    [egin{aligned} [x ^ n]F(x) &= frac{1}{n}[x ^ {n - 1}]left(frac{x}{G(x)} ight) ^ n \ &= frac{1}{n}[x ^ {n - 1}]left(frac{x(x ^ 2 + x - 1) ^ 2}{x - 1} ight) ^ n end{aligned} ]

    注意到后半部分分母部分不好处理,发现问题来源在于 (G(x)) 分子为 (x - 1)(frac{x}{G(x)}) 没有抵消,于是考虑换元:

    [H(x) = F(x) - 1 = x((H(x) + 1) ^ 2 + H(x)) ^ 2 ]

    可以用同样的方法构造出 (H(x)) 的复合逆 (G(x) = frac{x}{((x + 1) ^ 2 + x) ^ 2} = frac{x}{(x ^ 2 + 3x + 1) ^ 2}),此时应用拉格朗日反演公式:

    [egin{aligned} [x ^ n]F(x) &= frac{1}{n}[x ^ {n - 1}]left(frac{x}{G(x)} ight) ^ n \ &= frac{1}{n}[x ^ {n - 1}]left(x ^ 2 + 3x + 1 ight) ^ {2n} \ &= frac{1}{n} sumlimits_i ^ {lfloor frac{n - 1}{2} floor} dbinom{2n}{i ~~~ n - 2i - 1 ~~~ n + i + 1}3 ^ {n - 2i - 1}\ end{aligned} ]

    直接计算即可,复杂度 (mathcal{O}(n))

    GO!
  • 相关阅读:
    独立构件风格之C2风格
    Mysql远程授权报语法错误
    Vuforia3D模型上传
    Hololens Vuforia 物体识别
    C盘无损分区
    MRTK 当进入某个物体时调用的函数
    Java实现斐波那契数列的两种方法
    Leetcode452. 用最少数量的箭引爆气球(排序+贪心)
    Java对二维数组排序
    帮你理清js的继承
  • 原文地址:https://www.cnblogs.com/Go7338395/p/15439071.html
Copyright © 2020-2023  润新知