#P4805. 合并饭团(Combining Riceballs)
0
合并饭团(Combining Riceballs)
合并饭团(Combining Riceballs)
题目描述
Alphonse 有 个美味的饭团,它们大小不一,摆放成一行。他想把最大的饭团让给自己的基友。他可以执行以下操作:
-
如果两个相邻的饭团大小相同,Alphonse 可以把它们合并成一个新的饭团。新饭团的大小是两个原饭团大小之和。它将占据两个原饭团先前占据的位置。
-
如果两个饭团大小相同,且它们之间只有一个饭团,Alphonse 也可以把它们合并成一个新的饭团。(中间的饭团大小没有规定。)新饭团的大小是三个原饭团大小之和,并占据三个原饭团先前的位置。
Alphonse 可以按照他的意愿执行任意次操作。
在执行 0 或更多次操作后,确定他应该把哪个饭团让给基友。
输入格式
第一行,一个整数 。
第二行, 个以空格分隔的正整数,表示每个饭团的大小,按照从左到右的顺序给出。每个正整数的上界为 。
输出格式
输出 Alphonse 可以得到的最大的饭团大小。
样例输入 #1
7
47 12 12 3 9 9 3
样例输出 #1
48
样例输入 #2
4
1 2 3 1
样例输出 #2
3
数据范围
样例解释 1
有一种可能的合并方案为:合并大小同为 的两个饭团,得到一个大小为 的饭团。然后合并大小同为 的两个饭团,得到一个大小为 。接着合并大小为 和 的三个饭团,得到一个大小为 的饭团。最后合并大小同为 的两个饭团,得到一个大小为 的饭团。
样例解释 2
我们无法进行操作,所以答案为 。
对于 的数据,。
对于另外 的数据,。
对于另外 的数据,。
对于 的数据,,每个饭团大小不超过 。
知识点与难度
本题涉及的知识点从属于 CSP-S,难度(CF Rating):1750。
测试点分布
| Subtask | 分值 | 测试点编号 | 说明 |
|---|---|---|---|
| 0 | 10 | 1~2 | 样例 |
| 1 | 20 | 3~7 | 小规模 N≤10 / 特殊: N=1单饭团 / 特殊: 全程无法合并直接取原序列最大值 |
| 2 | 8~13 | 中等规模 N≤50 / Hack: 必须交替使用三合一与二合一才能解锁全局合并 | |
| 3 | 25 | 14~19 | 大规模 N=250 区间DP+双指针O(N^3)转移测试 |
| 4 | 20~25 | 满规模 N=400,a_i≤10^6 深层递归合并树构造极限压力测试 |
出处:原题链接