返回首页 返回题库

学习小组

C++ 中等 GESP六级真题 #动态规划#最值问题

题目描述

题面描述

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

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

输入格式

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

第二行, 个非负整数 ,表示不同人数学习小组的讨论积极度。

输出格式

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

样例1

输入:

4
1 5 6 3

输出:

10

样例2

输入:

8
0 2 5 6 4 3 3 4

输出:

12

数据范围

对于 的测试点,保证 。

对于所有测试点,保证 ,。

时间与内存限制

时间限制:1.0 s

内存限制:512.0 MB

💡 查看提示(先自己想一想再看)
本题考察完全背包类动态规划,定义dp[i]为将i个人分组的最大积极度之和,状态转移方程为dp[i] = max(dp[i], dp[j] + a[i-j]),其中1<=j<i。初始时dp[i] = a[i],即一开始假设i个人组成一个组的积极度,之后逐步拆分寻找更优解。
⚙ 开始做这道题 0 人做过 · 0 收藏 · 2 浏览

讨论(0)