#go002. 点菜
点菜
点菜
题目描述
奶龙在点菜, 它指着菜单 , 说了一句话 . 其中 是包含一系列的字符串的字典, 每个字符串是一道菜名. 是一个字符串.
老板需要根据奶龙说的话确认他点的菜, 由于大家点菜时都喜欢用简称, 如点 "鸡蛋肠粉" 时, 只需要说 "鸡蛋肠", 点 "百事可乐", 只需要说 "百事", 所以只要说出 中某道菜名的前缀, 就可以认为是点了一道菜。具体地, 老板需要将字符串 划分为若干段,使得每一段是 中某个字符串的前缀.
对于 的每个位置 , 有一个价格 . 如果一道菜以 结尾则需要支付 的价格. ( 可能为负值)
奶龙想知道, 他说出 的前 个字符后, 他需要支付的最少价格是多少. 请你对于所有 , 求出 的长度为 的前缀在经过老板划分后, 奶龙支付的最小代价。
输入格式
第一行包含两个整数 和 ,表示字符串 的长度和菜单 中菜名的数量。
第二行是长度为 的字符串 . 第三行包含 个整数,表示每个位置的 . 接下来 行, 每行一个字符串,每个字符串为菜单中的菜名.
输出格式
输出 行,共计 个整数,表示奶龙说出 的前 位后需要支付的最少价格。
如果老板不存在方法将其划分为若干菜名的前缀,则输出 noway
.
样例 #1
样例输入 #1
样例输出 #1
样例 #2
样例输入 #2
样例输出 #2
数据范围
对 的数据:
- 字符串 的长度 满足 。
- 菜单中的菜名数量 满足 ,每个菜名长度不超过 ,总长度 不超过 。
- 。
- 菜单 中的所有菜名均为非空字符串。
- 和 的字符集均为小写英文字母。
Subtask 1 10pts
- 菜单的总长度
Subtask 2 20pts
- 保证菜单中每个菜名长度不超过
Subtask 3 30pts
- 菜单的总长度
Subtask 4 40 pts
- 无额外保证