1 条题解

  • 0
    @ 2025-10-30 20:21:55

    1. 理解问题

    我们考虑一个 n 维立方体(超立方体),问它包含多少个 m 维“基础图形”(即 m 维面)。

    已知:

    • 0 维基础图形:点(顶点)
    • 1 维基础图形:边(线段)
    • 2 维基础图形:面(正方形)
    • 3 维基础图形:立方体
    • ……

    2. 从低维例子找规律

    n=2(正方形)

    • m=0(点):4 个顶点 → 4=224 = 2^2
    • m=1(边):4 条边 → 4=(21)221=224 = \binom{2}{1} \cdot 2^{2-1} = 2 \cdot 2
    • m=2(面):1 个面 → 1=(22)201 = \binom{2}{2} \cdot 2^{0}

    n=3(立方体)

    • m=0(点):8 个顶点 → 8=238 = 2^3
    • m=1(边):12 条边 → 12=(31)22=3412 = \binom{3}{1} \cdot 2^{2} = 3 \cdot 4
    • m=2(面):6 个面 → 6=(32)21=326 = \binom{3}{2} \cdot 2^{1} = 3 \cdot 2
    • m=3(体):1 个立方体 → 1=(33)201 = \binom{3}{3} \cdot 2^{0}

    3. 一般公式

    一个 n 维立方体 是由所有坐标 (x1,x2,,xn)(x_1, x_2, \dots, x_n) 组成的,其中 xi{0,1}x_i \in \{0,1\}

    一个 m 维面 可以通过以下方式得到:

    • 从 n 个维度中选出 m 个“自由维度”,这些维度可以在区间 [0,1] 中连续变化(形成 m 维立方体)。
    • 剩下的 n-m 个维度固定为 0 或 1(确定这个 m 维面的位置)。

    步骤:

    1. 选择哪 m 个维度是自由的:(nm)\binom{n}{m} 种选法。
    2. 对于 n-m 个固定维度,每个可以固定为 0 或 1:2nm2^{n-m} 种固定方式。

    因此,m 维面的个数为:

    (nm)2nm\boxed{\binom{n}{m} \cdot 2^{n-m}}

    4. 验证特例

    • m=0m = 0(n0)2n=2n\binom{n}{0} \cdot 2^{n} = 2^n(顶点数) ✅
    • m=nm = n(nn)20=1\binom{n}{n} \cdot 2^{0} = 1(整个 n 维立方体) ✅
    • m=1m = 1(n1)2n1=n2n1\binom{n}{1} \cdot 2^{n-1} = n \cdot 2^{n-1}(边数) ✅

    与已知结论一致。


    5. 模运算与实现

    我们需要对 T105T \le 10^5n,m105n, m \le 10^5 进行快速计算,模 998244353998244353

    步骤:

    1. 预处理阶乘 fact[i]fact[i] 和阶乘的逆元 invfact[i]invfact[i],范围 [0,N][0, N]N=105N=10^5
    2. 组合数计算:
    $$\binom{n}{m} = \frac{fact[n]}{fact[m] \cdot fact[n-m]} \pmod{998244353} $$
    1. 计算 2nmmod9982443532^{n-m} \bmod 998244353 用快速幂。
    2. 对于每个询问,输出:
    (nm)2nmmod998244353\binom{n}{m} \cdot 2^{n-m} \bmod 998244353

    6. 时间复杂度

    • 预处理阶乘与逆元:O(N)O(N)
    • 每个询问:O(log(nm))O(\log (n-m))(快速幂)或 O(1)O(1)(若预处理 2 的幂)
    • 总复杂度:O(N+TlogN)O(N + T \log N)O(N+T)O(N + T)(预处理幂)
    • 1

    信息

    ID
    4801
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    2
    已通过
    1
    上传者