1879. OverCooked!

时间限制 1000 ms   内存限制 256 MB

餐厅中有 $n$ 个订单,每个订单都是一道由指定原材料制成的菜。

订单必须依次完成,若上的菜符合当前订单的要求,订单完成并消失;若上的菜不符合当前订单的要求,订单会仍然存在。

每完成一个订单,均会获得 $p$ 分,而连续成功完成订单可以获得小费作为分数奖励,连续第 $x$ 个完成的订单可以获得 $q \times (x-1)$ 的额外分数。

所有订单全部完成后,再次上菜不获得任何分数。

鹦鹉厨师按照一定的顺序上了 $m$ 道菜,他想知道自己最后获得了多少分数。

输入数据

第 $1$ 行 $3$ 个整数 $n,\ p,\ q\ (1\le n\le 10^5,\ 1\le p,\ q\le 100)$。
接下来 $n$ 行,第 $i+1$ 行表示第 $i$ 个订单,每个订单由一个字符串组成,该字符串的每个字符表示这个订单要求的一个原材料。
接下来 $1$ 行,一个整数 $m\ (1\le m\le 10^5)$。
接下来 $m$ 行,第 $n+i+2$ 行表示第 $i$ 道菜,每道菜由一个字符串组成,该字符串的每个字符表示这个道菜包含的一个原材料。
若上菜的原料集合和订单相同,即可算作完成订单要求。
保证每个字符串长度不超过 $4$ 且每个字符均为大写英文字母。
例:
若订单为 $ABC$,菜为 $BAC$,订单成功。
若订单为 $AAB$,菜为 $ABA$,订单成功。
若订单为 $AAB$,菜为 $AA$,订单失败。
若订单为 $AA$,菜为 $AAB$,订单失败。

输出数据

输出一个数字为鹦鹉厨师最终获得的分数。

样例输入

复制
5 100 10
ABC
BB
A
C
BC
7
BAC
BBC
BC
BB
A
C
D ·   ·  \n
   \n
  \n
 \n
 \n
  \n
 \n
   \n
   \n
  \n
  \n
 \n
 \n
 \n

样例输出

复制
430   \n

样例说明

上菜 $BAC$,完成第一个订单 $ABC$, 获得 $100$ 分。
上菜 $BBC$,与第二个订单 $BB$ 不符,订单失败。
上菜 $BC$,与第二个订单 $BB$ 不符,订单失败。
上菜 $BB$,完成第二个订单 $BB$,获得 $100$ 分。
上菜 $A$,完成第三个订单 $A$,获得 $100$ 分,连续完成订单,获得小费 $10$ 分。
上菜 $C$,完成第四个订单 $C$,获得 $100$ 分,连续完成订单,获得小费 $20$ 分。
上菜 $D$,与第五个订单 $C$ 不符,订单失败。
总得分 $100+100+110+120=430$ 。

提交

请先 登录

© 2024 FAQs Contact About