【题解】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)\)。