G625061. [GESP202506 六级 C++] 26. 学习小组

提交4 通过3
通过率75%
时间限制1000ms
内存限制512MiB
    ID: 650 传统题 1000ms 512MiB 尝试: 4 已通过: 3 难度: 普及- 上传者: 标签>背包问题编程题c++动态规划 DP背包 DP1星

题目描述

班主任计划将班级里的 nn 名同学划分为若干个学习小组,每名同学都需要分入某一个学习小组中。观察发现,如果一个学习小组中恰好包含 kk 名同学,则该学习小组的讨论积极度为 aka_k。

给定讨论积极度 a1,a2,…,ana_1, a_2, \ldots, a_n,请你计算将这 nn 名同学划分为学习小组的所有可能方案中,讨论积极度之和的最大值。

输入格式

第一行,一个正整数 nn,表示班级人数。

第二行,nn 个非负整数 a1,a2,…,ana_1, a_2, \ldots, a_n,表示不同人数学习小组的讨论积极度。

输出格式

输出共一行,一个整数,表示所有划分方案中,学习小组讨论积极度之和的最大值。

4
1 5 6 3
10
8
0 2 5 6 4 3 3 4
12
1
7213
7213

数据范围

对于 40%40\% 的测试点,保证 1≤n≤101\le n\le 10。

对于所有测试点,保证 1≤n≤10001\le n\le 1000,0≤ai≤1040\le a_i\le 10^4。