从非前缀邻居的子集中查找最大的benifit值?

时间:2017-02-10 18:31:51

标签: string algorithm prefix

enter image description here

1&lt; n <= 4×10 ^ 5
每根弦的长度可达11 每个字符串只包含大写字母

示例 - 如果有3个字符串,A,B和AE,则输出为200 说明 - S = {“A”,“B”,“AE”}

字符串A和AE是前缀邻居,因此它们不能都是Mark的S子集。字符串B没有前缀邻居,因此我们将其包含在Mark的子集中。

为了最大化效益值,我们为子集选择AE和B.然后,我们计算所选子集的以下收益值:

Benefit value of AE = 65+69 = 134
Benefit value of B = 66

总收益值= 134 + 66 = 200。

1 个答案:

答案 0 :(得分:1)

将输入字插入radix tree并拼接出非关键字。计算树的maximum-weight independent set;链接转到未加权算法,因此您需要将1替换为此问题定义的节点权重。所有这些都是线性时间。