Loading

CSP-S2019 括号树(栈,dfs,DP)

CSP-S2019 括号树

\(n\) 树,每个点上有 (),问每个点从根走下来的路径上的括号序列里有多少子序列合法。\(1\le n \le 5 \times 10 ^ 5\)

CODE

\(F_u\) 是最后 \(u\) 的答案,可以通过求出 \(f_u\) 表示后缀合法序列个数而获得。

如果 \(f_u \neq 0\),则 \(a_u =\) )。因为所有合法后缀必然基于一个最短合法后缀,所以可以求出 \(s_u\) 后缀最短的合法串转移。设最短合法后缀中 \(u\)\(v\) 匹配,则 \(f_u = 1 + f(fa_v)\)

\(v\) 需要维护一个栈,插入和删除都需要回溯。

posted @ 2022-09-15 13:56  Pizza1123  阅读(59)  评论(0)    收藏  举报