#1417. Mr. Liang play Card Game
Mr. Liang play Card Game
最近,梁老师沉迷于纸牌游戏,无法自拔。 游戏是这样的:有张牌从左到右排成一排。 每张卡牌都有一个类型和一个等级(最初,所有卡牌等级均为 1)。 您可以无限次执行以下操作:
操作1:选择一张牌并打出。 每种卡类型都有一个值 。 玩 1 级卡产生的利润为 ,玩 2 级卡产生的利润为 ,玩 3 级卡产生的利润为 等等 。 不过卡牌等级有限制,最高等级为。
操作2:选择相邻的两张相同类型和等级的卡牌,将其合并为一张更高等级的卡牌。
作为他的好朋友,cv4456想请问您梁先生到底能获得的最大利润是多少?
Input
输入由多个测试用例组成。 第一行包含一个整数 () — 测试用例的数量。 测试用例的描述如下。
每种测试用例的第一行是四个整数 ,,,(, , , )。 表示卡牌数量、卡牌类型、卡牌等级上限以及卡牌的倍增系数。
每个测试用例的第二行是个整数(),表示最初放在桌上的张牌的类型。(桌上的牌都是1级)
每种测试用例的第三行是个整数(),表示每种卡片的利润。
数据保证的值超过20的组不会超过10个。
Output
对于每个测试用例打印一个整数——梁老师最终可以获得的最大利润。
Example
1
7 3 4 3
1 3 2 3 2 3 3
1 2 3
32
Example explain
梁老师可以先将第 1,3,5 张牌打出,得到 点利润,手牌变为 。然后将第 1,2 张牌合并,第 3,4 张牌合并,手牌变为 。最后将第 1,2 张牌合并然后打出,这样他就可以获得 点利润,总共获得 点利润。
Limitation
时间限制:3秒
内存限制:128 MB