#aBC354G. [ABC354G] Select Strings

[ABC354G] Select Strings

AT_abc354_g [ABC354G] Select Strings

题目描述

NN 个仅由小写英文字母组成的字符串 S1,S2,,SNS_1,S_2,\ldots,S_N,以及 NN 个正整数 A1,A2,,ANA_1,A_2,\ldots,A_N

对于集合 {1,2,,N}\lbrace 1,2,\ldots,N \rbrace 的某个子集 TT,如果对于任意 i,jTi,j \in Tiji \neq j,都不存在 SiS_iSjS_j 的子串的情况,则称 TT好集合

请你选择一个好集合 TT,使得 iTAi\displaystyle\sum_{i\in T}A_i 的值最大,并输出这个最大值。

子串的定义:字符串 SS子串是指通过从 SS 的开头删除 00 个或多个字符、从结尾删除 00 个或多个字符后得到的字符串。例如,ababc 的子串,但 ac 不是 abc 的子串。

输入格式

输入按以下格式从标准输入读入。

NN
S1S_1
S2S_2
\vdots
SNS_N
A1 A2  ANA_1\ A_2\ \ldots\ A_N

输出格式

请输出答案。

输入输出样例 #1

输入 #1

4
atcoder
at
coder
code
5 2 3 4

输出 #1

6

输入输出样例 #2

输入 #2

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

输出 #2

260

说明/提示

限制条件

  • 1N1001 \leq N \leq 100
  • SiS_i 由小写英文字母组成
  • 1Si1 \leq |S_i|
  • S1+S2++SN5000|S_1|+|S_2|+\ldots+|S_N| \leq 5000
  • 1Ai1091 \leq A_i \leq 10^9

样例解释 1

作为好集合的 TT 及其对应的 iTAi\displaystyle\sum_{i\in T}A_i 如下:

  • T={1}T = \lbrace 1 \rbrace 时,iTAi=5\displaystyle\sum_{i\in T}A_i = 5
  • T={2}T = \lbrace 2 \rbrace 时,iTAi=2\displaystyle\sum_{i\in T}A_i = 2
  • T={3}T = \lbrace 3 \rbrace 时,iTAi=3\displaystyle\sum_{i\in T}A_i = 3
  • T={4}T = \lbrace 4 \rbrace 时,iTAi=4\displaystyle\sum_{i\in T}A_i = 4
  • T={2,3}T = \lbrace 2,3 \rbrace 时,iTAi=5\displaystyle\sum_{i\in T}A_i = 5
  • T={2,4}T = \lbrace 2,4 \rbrace 时,iTAi=6\displaystyle\sum_{i\in T}A_i = 6

其中最大值为 66,因此输出 66

由 ChatGPT 4.1 翻译