#3096. Making Palindrome

0

Making Palindrome

Making Palindrome

题目描述

我们有 NN 个由小写英文字母组成的字符串:S1,S2,⋯ ,SNS_1, S_2, \cdots, S_N。 Takahashi 想通过选择一个或多个这些字符串(可以多次选择同一个字符串)并以他选择的某种顺序将它们连接起来,得到一个回文字符串。 使用字符串 SiS_i 一次的代价是 CiC_i,多次使用的代价是 CiC_i 乘以使用次数。 求使 Takahashi 能构成回文字符串所需的最小总代价。 如果不存在可以构成回文的字符串选择,输出 −1-1。

输入格式

输入按下列格式由标准输入给出: NN S1S_1 C1C_1 S2S_2 C2C_2 : SNS_N CNC_N

输出格式

打印使 Takahashi 能构成回文字符串的最小总代价;如果不存在这样的选择,则打印 −1-1。

3
ba 3
abc 4
cbaa 5
7
2
abcab 5
cba 3
11
4
ab 5
cba 3
a 12
ab 10
8
2
abc 1
ab 2
-1

提示

1≤N≤501 \leq N \leq 50 1≤∣Si∣≤201 \leq |S_i| \leq 20 SiS_i 由小写英文字母组成。 1≤Ci≤1091 \leq C_i \leq 10^9我们有 baba、abcabc 和 cbaacbaa。 例如,我们可以使用 baba 一次和 abcabc 一次,代价为 77,然后按顺序将它们连接为 abcabc, baba 以得到回文。 另外,我们可以使用 abcabc 一次和 cbaacbaa 一次,代价为 99,然后按顺序将它们连接为 cbaacbaa, abcabc 以得到回文。 无法以小于 77 的代价构成回文,因此应输出 77。
我们可以选择 abcababcab 一次和 cbacba 两次,然后按顺序将它们连接为 abcababcab, cbacba, cbacba 以得到回文,代价为 1111。
我们可以选择 aa 一次,它本身就是回文,但通过连接 abab 和 cbacba 更便宜。
我们无法构成回文,因此应输出 −1-1。

标签: AtCoder|abc175F

来源

AtCoder|abc175F