1 条题解

  • 0
    @ 2026-9-3 10:31:55

    题解

    思路

    一个确定括号串的深度,等于某个分割点左边左括号数和右边右括号数的较小值的最大值。换言之,深度至少为 kk,当且仅当存在第 kk 个左括号,并且它右侧至少还有 kk 个右括号。

    问号不超过 1818 时可枚举所有替换。n≤200n\le200 时可对每个深度阈值重新计算前后缀分布。满分算法一次预处理所有前后缀计数,复用到全部阈值。

    做法

    令 L[i][j]L[i][j] 表示前 ii 个字符恰有 jj 个左括号的替换方案数,R[i][j]R[i][j] 表示后缀 i…n−1i\ldots n-1 恰有 jj 个右括号的方案数。再对 RR 的计数维做后缀和,得到后缀中至少有 jj 个右括号的方案数。

    固定深度阈值 kk。对每种完整替换,若其深度至少为 kk,第 kk 个左括号的位置唯一。枚举该位置 ii:前缀需要恰有 k−1k-1 个左括号,位置 ii 能取左括号,右侧需要至少 kk 个右括号。三部分相乘并求和,就得到深度至少为 kk 的替换数。

    最后利用非负整数恒等式

    $$\sum_s \operatorname{depth}(s)=\sum_{k\ge1}\#\{s:\operatorname{depth}(s)\ge k\}$$

    求出答案。

    复杂度

    时间复杂度为 O(n2)O(n^2),空间复杂度为 O(n2)O(n^2)。

    • 1

    信息

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