翻译
查看原帖
翻译
749175
114514xxx楼主2024/8/12 19:25

题目描述

给定一个由变量集合 VV 和函数符号集合 FF 定义的特定领域中的术语集。术语集根据以下规则归纳定义:

1.任何变量都是一个术语。

2.任何函数符号 ff 满足 ar(f)=0\text{ar}(f) = 0 是一个术语。

3.任何表达式 f(t1,…,tn)f(t_1, \ldots, t_n),其中 ar(f)=n≥1\text{ar}(f) = n \geq 1 且每个参数 ti((1≤i≤nt_i (( 1 \leq i \leq n)都是一个术语,也是一个术语。

这里 ar\text{ar} 是从函数符号集合 FF 到自然数的函数,表示每个函数符号的参数数量。

现在,我们希望以有向无环多重图(Directed Acyclic Multigraph, DAM)的形式来表示术语,以优化存储和计算效率。在DAM中,顶点被标记为来自 FF 的函数符号或来自 VV 的变量,边被标记为对应子术语在术语结构中的参数位置。

对于给定的术语字符串表示,你的任务是计算表示该术语的DAM所需的最小顶点数,即共享最多子术语的DAM的大小。

输入

输入包含多个测试用例,每个测试用例是一行,表示一个术语的字符串表示 ss。变量 VV 在 ss 中由以大写字母开头的字符串 vv(长度 1≤∣v∣≤201 \leq |v| \leq 20)表示,包含小写和大写英文字母。函数符号 FF 在 ss 中由以小写字母开头的字符串 ff(长度 1≤∣f∣≤201 \leq |f| \leq 20)表示,同样包含小写和大写英文字母。每个测试用例的字符串长度 1≤∣s∣≤1051 \leq |s| \leq 10^5。你可以假设每个测试用例中的变量和函数符号总数不超过 20002000(不一定各不相同)。

输出

对于每个测试用例,输出表示 ss 的DAM所需的最小顶点数。 源码

题目描述

给定一个由变量集合 $ V $ 和函数符号集合 $ F $ 定义的特定领域中的术语集。术语集根据以下规则归纳定义:

   1.任何变量都是一个术语。
   
   2.任何函数符号 $ f $ 满足 $ \text{ar}(f) = 0 $ 是一个术语。
    
    
   3.任何表达式 $ f(t_1, \ldots, t_n) $,其中 $ \text{ar}(f) = n \geq 1 $ 且每个参数 $ t_i (( 1 \leq i \leq n $)都是一个术语,也是一个术语。

这里 $ \text{ar} $ 是从函数符号集合 $ F $ 到自然数的函数,表示每个函数符号的参数数量。

现在,我们希望以有向无环多重图(Directed Acyclic Multigraph, DAM)的形式来表示术语,以优化存储和计算效率。在DAM中,顶点被标记为来自 $ F $ 的函数符号或来自 $ V $ 的变量,边被标记为对应子术语在术语结构中的参数位置。

对于给定的术语字符串表示,你的任务是计算表示该术语的DAM所需的最小顶点数,即共享最多子术语的DAM的大小。

输入

输入包含多个测试用例,每个测试用例是一行,表示一个术语的字符串表示 $ s $。变量 $ V $ 在 $ s $ 中由以大写字母开头的字符串 $ v $(长度 $ 1 \leq |v| \leq 20 $)表示,包含小写和大写英文字母。函数符号 $ F $ 在 $ s $ 中由以小写字母开头的字符串 $ f $(长度 $ 1 \leq |f| \leq 20 $)表示,同样包含小写和大写英文字母。每个测试用例的字符串长度 $ 1 \leq |s| \leq 10^5 $。你可以假设每个测试用例中的变量和函数符号总数不超过 $ 2000 $(不一定各不相同)。

输出

对于每个测试用例,输出表示 $ s $ 的DAM所需的最小顶点数。
2024/8/12 19:25
加载中...