CF172E BHTML+BCSS
题目描述
这道题目讨论的是两种虚构语言:BHTML 和 BCSS,它们略微类似于 HTML 和 CSS。请仔细理解题目,因为它们之间的相似性相当微小,问题中用到了极为简化的模拟。
你需要处理一个类似 HTML 的 BHTML 文档,但简化了许多。这个文档由一系列的开始标签和结束标签组成。形如 `` 的称为开始标签,而 `` 则是结束标签。此外,还有自闭合标签,写作 ``,在本题中等同于 ``。所有标签名都是由小写字母构成的字符串,长度在 1 到 10 个字符之间。不同标签的标签名可以相同。
文档的标签构成了一个正确的括号序列,能够通过以下操作将其转换为空:
- 移除任何自闭合标签 ``,
- 移除任意一对连续出现且名称相同的开始和结束标签,即去掉子串 ``。
例如,你可以看到这样的文档:`
`。而你不会遇到 ``、``、`` 或 `` 这样的内容。 显然,每个开始标签都有唯一对应的结束标签——这种标签对称为一个“元素”。自闭合标签也视为一个元素。对于嵌套关系,若一个元素的标签位于另一个元素的标签之间,则称这个元素嵌套在另一个元素中。同一元素不会嵌套在自己内部。例如,在上面的例子中,元素 `b` 嵌套在 `header` 和 `p` 中,但不嵌套在 `a` 和 `footer` 中,当然也不嵌套在自身内部。元素 `header` 内有三个嵌套元素,而 `footer` 里没有任何嵌套元素。 为了在显示 BHTML 文档时为元素应用样式,我们需要使用 BCSS 规则。每条规则规定为一个单词子序列 " $ x_{1} $ $ x_{2} $ ... $ x_{n} $ "。这条规则适用于所有满足以下条件的元素 $ t $: - 存在一个由标签名为 " $ x_{1} $ ", " $ x_{2} $ ", ..., " $ x_{n} $ " 的元素组成的嵌套序列(即第二个元素嵌套在第一个中,第三个嵌套在第二个中,如此类推), - 其序列最终以元素 $ t $ 结束(即 $ t $ 的标签名为 " $ x_{n} $ ")。 例如,元素 `b` 符合规则 "a b",表示存在一个元素 `a`,使得 `b` 嵌套在 `a` 中。元素 `c` 符合规则 "a b b c",说明在链 "a"-"b"-"b"-"c" 中,每个后续元素都嵌套在前一个中。 给定一个 BHTML 文档和一组 BCSS 规则,编程计算每条规则下符合条件的元素数量。
输入格式
第一行提供一个 BHTML 文档,长度在 4 到 $10^6$ 个字符之间。文档结构正确,不含空格或其他无效字符。标签名由小写字母组成,长度为 1 到 10 个字符。
第二行给出一个整数 $m$($1 \le m \le 200$),表示有多少个查询。接下来 $m$ 行中,每行是一个查询,形式为一个序列 $x_1, x_2, \ldots, x_n$,其中每个 $x_i$ 是查询中的元素,$n$($1 \le n \le 200$)表示查询中元素的数量。查询元素之间用单个空格分隔,行首行尾没有空格。每个查询元素是长度在 1 到 10 个小写字母构成的字符串。
输出格式
输出 $m$ 行,每行是文档中对应第 $j$ 条 BCSS 规则的符合元素数量。如果没有符合条件的元素,则输出 0。
**本翻译由 AI 自动生成**