#iai15c2. 合成游戏(Merge Game)
合成游戏(Merge Game)
合成游戏(Merge Game)
题目描述
有很多合成类的游戏都有如下的玩法:玩家会得到很多数字,每个数字都是 2 的幂,玩家可以挑选两个一样大的数字,将它们合成一个新的数字,新数字为原数字的两倍大小。如果这种合成操作可以不断地进行,给定小爱在最初获得的数字集合,请帮她算一下能够获得的最大数字。
2 的幂是指只有 2 作为素因子的正整数。如 4、256 等等。但 60 不是,因为它有素因子 3。
输入格式
第一行:单个正整数 n,表示小爱一开始拥有的数字数量; 第二行:n 个正整数 a₁, a₂, ⋯, aₙ,表示刚开始时获得的数字,保证每个数字都是 2 的幂。
输出格式
单个正整数:表示最后可以得到的最大数字大小。
数据范围
- 对于 30% 的数据,1 ≤ n ≤ 100,1 ≤ aᵢ ≤ 128;
- 对于 60% 的数据,1 ≤ n ≤ 2000,1 ≤ aᵢ ≤ 2²⁰;
- 对于 100% 的数据,1 ≤ n ≤ 1,000,000,1 ≤ aᵢ ≤ 2⁴⁰。
样例输入 #1
5 4 1 2 1 1
样例输出 #1
8
说明:两个1合成了一个2,再合成一个4,最后得到8,还有一个1是多余的
知识点与难度
本题涉及的知识点从属于 GESP 3级,难度等级:⭐⭐。
测试点分布
| Subtask | 分值 | 测试点编号 | 说明 |
|---|---|---|---|
| 0 | 10 | 1~2 | 样例 |
| 1 | 20 | 3~8 | 小规模 n≤10 / 特殊: 全相同 / 特殊: 全1 |
| 2 | 15 | 9~11 | Hack: n=1 / Hack: 无法合成 / Hack: 连续合成 |
| 3 | 30 | 12~20 | 中规模 n≈100~2000 / 大规模 n≈1000000 压力 |
| 4 | 25 | 21~25 | 随机 n=1~1000000 回归 |