#ABC354G. 选择字符串

选择字符串

选择字符串

题目描述

给你 NN 个由小写英文字母组成的字符串 S1,S2,…,SNS_1, S_2, \ldots, S_N 和 NN 个正整数 A1,A2,…,ANA_1, A_2, \ldots, A_N。

若集合 T⊆{1,2,…,N}T \subseteq \lbrace 1, 2, \ldots, N \rbrace 中不存在 i,j∈Ti, j \in T(i≠ji \neq j)使得 SiS_i 是 SjS_j 的子串,则称 TT 是好的集合。

求好的集合 TT 所对应的 ∑i∈TAi\displaystyle \sum_{i \in T} A_i 的最大可能值。

什么是子串?

字符串 SS 的子串,是指从 SS 的开头删除任意(可为 0 个)字符、并从结尾删除任意(可为 0 个)字符后得到的字符串。 例如,ab 是 abc 的子串,但 ac 不是 abc 的子串。

输入格式

输入按以下格式从标准输入给出:

NN
S1S_1
S2S_2
⋮\vdots
SNS_N
A1A_1 A2A_2 …\ldots ANA_N

输出格式

输出答案。

样例

4
atcoder
at
coder
code
5 2 3 4
6

可能的好的集合 TT 及其对应的 ∑i∈TAi\displaystyle \sum_{i \in T} A_i 如下:

  • T={1}T = \lbrace 1 \rbrace:∑i∈TAi=5\displaystyle \sum_{i \in T} A_i = 5
  • T={2}T = \lbrace 2 \rbrace:∑i∈TAi=2\displaystyle \sum_{i \in T} A_i = 2
  • T={3}T = \lbrace 3 \rbrace:∑i∈TAi=3\displaystyle \sum_{i \in T} A_i = 3
  • T={4}T = \lbrace 4 \rbrace:∑i∈TAi=4\displaystyle \sum_{i \in T} A_i = 4
  • T={2,3}T = \lbrace 2, 3 \rbrace:∑i∈TAi=5\displaystyle \sum_{i \in T} A_i = 5
  • T={2,4}T = \lbrace 2, 4 \rbrace:∑i∈TAi=6\displaystyle \sum_{i \in T} A_i = 6

其中最大的是 66,因此输出 66。

10
abcd
abc
ab
a
b
c
d
ab
bc
cd
100 10 50 30 60 90 80 70 40 20
260

数据范围

  • 1≤N≤1001 \le N \le 100
  • SiS_i 是由小写英文字母组成的字符串
  • 1≤∣Si∣1 \le |S_i|
  • ∣S1∣+∣S2∣+…+∣SN∣≤5000|S_1| + |S_2| + \ldots + |S_N| \le 5000
  • 1≤Ai≤1091 \le A_i \le 10^9
难度 省选/NOI-
通过率 —
尝试 0
通过 0
ID
3304
类型
传统题
Time Limit
2000ms
Memory Limit
1024MiB
上传者
标签