消消乐
问题描述
给定一个由 $n$ 个整数构成的数组 $a = [a_1, \ldots, a_n]$。每次你可以对数组 $a$ 进行以下操作,直到数组 $a$ 变为空:
- 指定 $a$ 中的一个元素,获得该元素两侧相邻元素之和的分数,并将该元素从 $a$ 中删去。 特别地,如果相邻元素不存在则该元素的值视为 $0$。例如,对于 $a = [1, 2, 3]$ 可以进行以下操作:
- 指定元素 $2$,获得分数 $1 + 3$,删去 $2$ 后 $a = [1, 3]$;
- 指定元素 $1$,获得分数 $0 + 3$,删去 $1$ 后 $a = [3]$;
- 指定元素 $3$,获得分数 $0 + 0$,删去 $3$ 后 $a$ 变为空。 请问你能获得的分数总和最大是多少?
输入描述
第一行,一个正整数 $n$,表示数组长度。 第二行,$n$ 个非负整数 $a_1, \ldots, a_n$,表示数组 $a$ 中的整数。
输出描述
输出一行,一个整数,表示能获得的最大分数总和。
样例输入 1
6
1 6 3 2 9 1
样例输出 1
55
样例解释 1
按区间 DP 计算所有删除顺序,最优策略下可获得的总分为 $55$。
样例输入 2
5
3 1415 926 53 58
样例输出 2
5771
样例解释 2
按区间 DP 计算所有删除顺序,最优策略下可获得的总分为 $5771$。
数据范围
对于 40% 的测试点,保证 $1 \le n \le 50$,$0 \le a_i \le 10^3$。 对于所有测试点,保证 $1 \le n \le 100$,$0 \le a_i \le 10^9$。
本题为编程题,提交代码并运行通过测试点后判分。
正在加载题目数据…
子题
该题型需在试卷/作业中作答,单题练习暂不支持
答案解析