问题 5301 --竞技场角斗5301: 竞技场角斗
时间限制: 2 Sec 内存限制: 512 MB
提交: 9 解决: 6
[提交][状态][命题人:]题目描述
与此同时,森林之外,有一个巨大的圆形竞技场,守护者是亚乌菈和马雷。
两位守护者在竞技场上进行着残酷的角斗游戏。
有 n 名角斗士需要依次考虑是否上场。第 i 名角斗士的战斗力为 a[i] ,购买第 i 名角斗士将其排入竞技场需要花费 b[i] 金币。
竞技场规则如下:
- 战斗力为 x 的角斗士上场后,会获得 c[x] 金币的收益。
- 如果竞技场上有两名战斗力相同的角斗士,则他们会展开角斗,败者下场,胜者战斗力+1并继续留在场上,同时获得对应新战斗力的收益。如果战斗力提升后出现了新的战斗力相同的两名角斗士,则会继续角斗,直至场上所有角斗士的战斗力两两互不相同。
求选择一个战斗力单调不升的角斗士子序列(可以为空序列),购买这些角斗士并将他们依次排入竞技场,【总收益-总花费】最大是多少。
子序列定义:最初序列通过去除某些元素但不破坏余下元素的相对位置(在前或在后)而形成的新序列。
输入
第一行包含两个整数 n,m (1≤n,m≤2000) ,表示角斗士数量和初始战斗力的上限。
第二行包含 n 个整数 a[1],a[2],...,a[n] (1≤a[i]≤m),表示每名角斗士的初始战斗力。
第三行包含 n 个整数 b[1],b[2],...,b[n] (0≤b[i]≤5000) ,表示每名角斗士的购买费用。
第四行包含 n+m 个整数 c[1],c[2],...,c[n+m] ,表示每档战斗力所获得的收益。
输出
输出一个整数,表示最大的【总收益-总花费】。
提示
在样例 1 中,
可以选择第 1,2,3,5 名角斗士,花费 1+2+1+1=5 金币。接下来每轮依次排入角斗士:
- 战斗力为 4 的角斗士派入场,获得 4 金币。
- 战斗力为 3 的角斗士派入场,获得 3 金币。
- 战斗力为 1 的角斗士派入场,获得 1 金币。
- 战斗力为 1 的角斗士派入场,获得 1 金币。然后两名战斗力为 1 的角斗士展开角斗,其中一名下场,另一名战斗力变为 2 的,获得 2 金币。
共计获得 4+3+1+1+2=11 金币。总利润 11-5=6 金币。
在样例 2 中,
无法同时招募两名角斗士,因为要求战斗力单调不升。因此招募第 2 名角斗士,花费 0 金币,获得 2 金币,总利润 2-0=2 金币。
来源
[提交][状态]