CF237E Build String
题目描述
你需要使用一些字符串 $s_1,s_2,\dots,s_n$ 来构建字符串 $t$,你可以执行 $|t|$($|t|$ 是字符串 $t$ 的长度)次操作:
1. 从字符串 $s_1,s_2,\dots,s_n$ 中选择一个非空字符串;
2. 从所选字符串中选择一个字符并将其写在纸上;
3. 从所选字符串中删除所选字符。
注意:执行上述操作后,字符串 $s_1,s_2,\dots,s_n$ 中的字符总数减少 $1$。
我们认为构建出了字符串 $t$,当且仅当写在纸上的字符按顺序连起来为 $t$。
但是还有其他限制:对于每个字符串 $s_i$,有 $a_i$ 为允许从字符串 $s_i$ 中删除的最大字符数。
而且,从字符串 $s_i$ 中每个删除字符的操作都需要一些代价。对于 $s_i$,从中删除 $1$ 个字符需要花费 $i$ 的代价。
你的任务是计算根据给定规则构建字符串 $t$ 所需的最小代价。
输入格式
输入的第一行包含字符串 $t$。
第二行包含一个整数 $n$。
接下来的 $n$ 行,每一行都包含一个字符串 $s_i$ 和一个整数 $a_i$(使用空格隔开),含义如题目所述。
输出格式
输出一个数字,为最小代价。若无解,请输出 $-1$。
说明/提示
### 第一个样例:
1. 第一个字符串中取字符“b”和“z”;
2. 第二个字符串中取字符“a”,“e”和“b”。
在这种方案下,字符串 $t$ 的代价是 $2\times1+3\times2=8$。
### 第二个样例
1. 第一个字符串中取两个字符“a”;
2. 第二个字符串中取字符“c”;
3. 第三个字符串中取两个字符“a”;
4. 第四个字符串中取两个字符“b”。
在这种方案下,字符串t的代价是 $2\times1+1\times2+2\times3+2\times4=18$。
### 第三个样例
无解,因为给定字符串中没有字符“y”。
输入中的所有字符串仅由小写英文字母组成。
$1\le|t|,|s_i|\le100$,$1\le n\le100$