#YHCSPJMN90003. 消除游戏
消除游戏
消除游戏
题目背景
在育华学校组织的编程实践活动里,有一款有趣的消除游戏场景。同学们需要处理一排信号球的消除规则,计算全部消除时能获得的最大能量,以此锻炼动态规划算法的应用能力,理解如何在不同消除策略中寻找最优解。
题目描述
在育华学校的消除游戏中,初始会获得 n 个排成一行的信号球,每个信号球有对应的颜色。
每次操作,可以选择消除:
- 相邻1个颜色相同的信号球,获得
a能量值 - 相邻2个颜色相同的信号球,获得
b能量值 - 相邻3个颜色相同的信号球,获得
c能量值
信号球消除后,其两边的信号球会连在一起。目标是求出将所有信号球消除时,最多可以获得多少能量。
输入格式
第一行输入 4 个整数 n, a, b, c,分别表示信号球的数量、一消/二消/三消时可获得的对应能量值。
第二行输入 n 个整数 s₁~sₙ,第 i 个整数表示第 i 个信号球的颜色。
输出格式
输出全部消除信号球时最多可以获得的能量值。
样例
样例输入 1
8 1 3 7
3 1 3 1 3 2 2 3
样例输出 1
14
数据规模与测试点
| 测试点编号 | 数据范围说明 | 特殊性质 |
|---|---|---|
| 1-2 | 1 ≤ n, sᵢ ≤ 300,0 ≤ a, b, c ≤ 10⁴ |
c = 0(三消获取能量为零) |
| 3-4 | ||
| 5-6 | ||
| 7-8 | ||
| 9-10 | 无特殊限制 | |
| 11-12 | ||
| 13-14 | ||
| 15-16 | ||
| 17-18 | ||
| 19-20 |
相关
在下列比赛中: