当前位置: 首页 > news >正文

2025年6月GESP(C++六级):学习小组

2025年6月GESP(C++六级):学习小组

在这里插入图片描述

题目描述

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

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

输入格式

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

第二行,$ n $ 个非负整数 $ a_1, a_2, \ldots, a_n $,表示不同人数学习小组的讨论积极度。

输出格式

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

输入输出样例 #1

输入 #1

4
1 5 6 3

输出 #1

10

输入输出样例 #2

输入 #2

8
0 2 5 6 4 3 3 4

输出 #2

12

说明/提示

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

对于所有测试点,保证 1≤n≤10001\le n\le 10001n10000≤ai≤1040\le a_i\le 10^40ai104

思路分析

  1. 问题目标:将n个同学划分为若干小组(小组人数任意),使得所有小组的积极度之和最大化。
  2. 核心思想:使用动态规划(DP)解决分组优化问题:
    • dp[j]表示将j个同学划分成若干小组能获得的最大积极度之和
    • 初始状态:dp[0] = 0(0个同学的积极度为0)
  3. 状态转移
    • 对于每个小组人数i(1≤i≤n)
    • 对于每个总人数j(i≤j≤n)
    • 考虑划分出一个大小为i的小组:剩余j-i个同学的最优解dp[j-i]加上当前小组的积极度a[i]
    • 通过max()函数更新dp[j],保留更优解
  4. 关键理解
    • 内层循环顺序处理保证每个小组规模只使用一次(避免重复计数)
    • 通过枚举所有可能的小组规模,覆盖所有划分方案
    • 最终解存储在dp[n]中,表示n个同学的最优划分结果

AC代码

#include<bits/stdc++.h>
using namespace std;   int n; 
int a[1010];   // 存储不同人数小组的积极度,a[i]表示人数为i的小组的积极度
int dp[1010];  // dp[j]表示将j个同学划分成若干小组能获得的最大积极度之和int main(){ cin >> n;  // 输入班级总人数// 读取积极度数据,注意a[1]对应小组人数1的积极度,a[2]对应小组人数2的积极度,以此类推for(int i = 1; i <= n; i++) {cin >> a[i];}// 动态规划求解for(int i = 1; i <= n; i++) {       // 枚举小组人数i(从1人到n人)for(int j = i; j <= n; j++) {   // 枚举总人数j(从i开始,因为至少需要i人才能组成一个小组)// 状态转移方程:考虑将j个人划分出一个大小为i的小组// dp[j]可能由两种情况得到:// 1. 不划分i人小组:保持原值dp[j]// 2. 划分一个i人小组:剩余j-i人的最优解dp[j-i] + 当前i人小组的积极度a[i]dp[j] = max(dp[j], dp[j - i] + a[i]);}}cout << dp[n];  // 输出将n个同学划分的最大积极度之和return 0;
}

文末彩蛋:

点击查看老师的个人主页,学习csp信奥赛完整系列课程:
https://edu.csdn.net/lecturer/7901

在这里插入图片描述

http://www.dtcms.com/a/296272.html

相关文章:

  • MySQL常见命令
  • 封装和使用自定义指令
  • Mysql大数据架构设计:当表中数据超过800万时,对数据表进行分表操作,以及分页查询优化详解
  • linux常见面试题/笔试收录(一)
  • 《云计算蓝皮书 2025 》发布:云计算加速成为智能时代核心引擎
  • Unity VS Unreal Engine ,“电影像游戏的时代” 新手如何抉择引擎?(结)
  • EVAL长度限制突破方法
  • FastGPT:企业级智能问答系统,让知识库触手可及
  • 使用Claude Code从零到一打造一个现代化的GitHub Star项目管理器
  • 密码学与加密货币:构建去中心化信任的技术基石与未来挑战
  • 离线环境下如何优雅地部署 Mentor Questa
  • 在Ubuntu上使用QEMU仿真运行ARM汇编
  • 【​I2S:芯片设计中的“音频桥梁”​】
  • 使用 eBPF 实时捕获 TCP 重传告警:精准定位网络抖动问题
  • 点击按钮滚动到底功能vue的v-on:scroll运用
  • 亚马逊云科技实战架构:构建可扩展、高效率、无服务器应用
  • MinIO Go 客户端使用详解:对象存储开发实战指南
  • 风波不断,“奶粉第一股”贝因美渡劫
  • nginx有几种日志
  • 【vector定义】vector f(k, vector<int>(k));
  • 第三章:掌握 Redis 存储与获取数据的核心命令
  • 阿里v1支付系列验证码逆向/百度成语点选vmp逆向
  • 基于深度学习的胸部 X 光图像肺炎分类系统(四)
  • 电脑录屏软件推荐:如何使用oCam录制游戏、教程视频
  • 视频二维码在产品设备说明书中的应用
  • Docker4-容器化企业级应用
  • C++map和set
  • leetcode101.对称二叉树树(递归练习题)
  • 基于20和28 nm FPGAs的实现多通道、低非线性时间到数字转换器
  • 安全插座项目规划书