D. Neko and Aki’s Prank
题意
将长度为 $2n$ 的所有合法括号匹配放入字典树中,求这棵树的最大的边集,边集里的边两两不相连
题解
对于括号匹配 $(((),()((,(()($ 来说,其子树是一样的, $dp[i][j]$ 表示深度为 $i$ 的左括号比右括号多 $j$ 的括号匹配的答案,我们直接贪心的取边,能取就取,使用一个 $vis[i][j]$ 来标记点是否取了,$dp[i][j]=dp[i+1][j+1]+dp[i+1][j-1]+(vis[i+1][j+1]==0||vis[i+1][j-1]==0)$,注意判断 $[i][j]$ 是否是合法的节点
代码
1 |
|