Noip2019 括号树
f[i]表示:以i结尾的合法序列的个数。
我们用栈来记录’(‘的位置,对于当前出现的一个’(’,我们将它放入栈中;对于当前出现的一个’)’,如果栈为空,则无贡献,如果栈不为空,则可得:f[i]+=f[fa[sta[top]]]。
因为f[i]表示以i结尾的合法序列的个数,所以最后需要将以i节点的若干个祖先节点为结尾的合法序列的个数,累加至f[i]中,即:f[i]+=f[fa[i]]。
#include <bits/stdc++.h>
#define int long long
using nam
原创
2020-09-21 20:19:33 ·
212 阅读 ·
0 评论