【题解】CF1598F 动态规划、状压、括号匹配

考虑长度为 \(n\) 的合法括号匹配序列 \(s\) 的一个等价转换:

  • \(val(s,i) = S_i =\sum_{j=1}^i (-1)^{[s[i]==')']}\)

  • \(\forall 1\le i\le n,S_i\ge 0,S_n=0\)

\(f[S]\) 为由 \(S\) 内的括号序列组成的排列中的最优解。

考虑排列中的最后一个括号序列以及其是否有贡献:

  • 最后一个括号序列是 \(s\) 且没有贡献 \(f[S]\gets f[S/s]\)

  • 最后一个括号序列是 \(s\) 且有贡献:

    • 若最后一个括号序列是 \(s\) ,考虑 \(S/s\) 构成的一个括号序列 \(T\)\(T\) 接在 \(s\) 前有贡献当且仅当 \(\forall i\le |T|,val(T,i) \ge 0\)
    • \(g[S]\) 为由 \(S\) 内的括号序列组成的排列中满足\(\forall i\le |T|,val(T,i) \ge 0\) 的最优解。
    • 考虑第 \(i\) 个括号序列 \(T_i\) ,令 \(w[i][k]=\sum_{j\le|T_i|}[val(T_i,j)+k=0]\)
    • 那么有 \(f[S]\gets g[S/s]+w[s][V(S)]\) ,其中 \(V(S)=\sum_{a\in S} val(T_a,|T_a|)\)

预处理 \(V,w[][]\) 后状压的复杂度是 \(O(n\times 2^n)\)

posted @ 2021-10-10 21:38  Themaxmaxmax  阅读(36)  评论(0编辑  收藏  举报