news 2026/6/25 16:08:37

GESP认证C++编程真题解析 | P10112 [GESP202312 八级] 奖品分配

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
GESP认证C++编程真题解析 | P10112 [GESP202312 八级] 奖品分配

​欢迎大家订阅我的专栏:算法题解:C++与Python实现!
本专栏旨在帮助大家从基础到进阶 ,逐步提升编程能力,助力信息学竞赛备战!

专栏特色
1.经典算法练习:根据信息学竞赛大纲,精心挑选经典算法题目,提供清晰的代码实现与详细指导,帮助您夯实算法基础。
2.系统化学习路径:按照算法类别和难度分级,从基础到进阶,循序渐进,帮助您全面提升编程能力与算法思维。

适合人群:

  • 准备参加蓝桥杯、GESP、CSP-J、CSP-S等信息学竞赛的学生
  • 希望系统学习C++/Python编程的初学者
  • 想要提升算法与编程能力的编程爱好者

附上汇总帖:GESP认证C++编程真题解析 | 汇总


【题目来源】

洛谷:[P10112 GESP202312 八级] 奖品分配 - 洛谷

【题目描述】

班上有N NN名同学,学号从0 00N − 1 N-1N1。有M MM种奖品要分给这些同学,其中,第i ii种奖品总共有a i a_iai个 (i = 0 , 1 , ⋯ , M − 1 i=0,1, \cdots ,M-1i=0,1,,M1)。

巧合的是,奖品的数量不多不少,每位同学都可以恰好分到一个奖品,且最后剩余的奖品不超过1 11个(即:N ≤ a 0 + a 1 + ⋯ + a M − 1 ≤ N + 1 N\le a_0+a_1+ \cdots +a_{M-1}\le N+1Na0+a1++aM1N+1)。

现在,请你求出每个班级礼物分配的方案数,所谓方案,指的是为每位同学都分配一个种类的奖品。

只要有一位同学获得了不同种类的奖品,即视为不同的方案。方便起见,你只需要输出方案数对1 0 9 + 7 10^{9}+7109+7取模后的结果即可。

共有T TT个班级都面临着奖品分配的问题,你需要依次为他们解答。

【输入】

第一行一个整数T TT,表示班级数量。

接下来T TT行,每行若干用单个空格隔开的正整数。首先是两个正整数N , M N,MN,M,接着是M MM个正整数a 0 , a 1 . . . a M − 1 a_0,a_1...a_{M-1}a0,a1...aM1。保证 $N \le a_0+a_1+\cdots+a_{M-1} \le N+1 $。

【输出】

输出T TT行,每行一个整数,表示该班级分配奖品的方案数对1 0 9 + 7 10^{9}+7109+7取模的结果。

【输入样例】

3 3 2 1 2 3 2 1 3 5 3 1 3 1

【输出样例】

3 4 20

【算法标签】

《洛谷 P10112 奖品分配》 #数学# #组合数学# #排列组合# #GESP# #2023#

【代码详解】

#include<bits/stdc++.h>usingnamespacestd;#defineintlonglong// 将int重定义为long longconstintN=1005;// 最大数组大小constintmod=1e9+7;// 模数intT,n,m;// T: 测试用例数, n: 总位置数, m: 颜色种类数inta[N];// a[i]: 第i种颜色的数量intc[N][N];// 组合数C[n][m]intans,sum;// ans: 答案, sum: 所有颜色的总数// 初始化组合数表(杨辉三角)voidinit(){for(inti=0;i<N;i++){for(intj=0;j<=i;j++){if(j==0){c[i][j]=1;// C(i,0)=1}else{// 组合数递推公式:C(i,j)=C(i-1,j)+C(i-1,j-1)c[i][j]=(c[i-1][j]+c[i-1][j-1])%mod;}}}}signedmain()// 因为#define int long long,所以用signed main{// 预处理组合数init();// 输入测试用例数cin>>T;while(T--){// 输入总位置数n和颜色种类数mcin>>n>>m;// 初始化总和sum=0;// 输入每种颜色的数量for(inti=1;i<=m;i++){cin>>a[i];sum+=a[i];// 计算颜色总数}// 初始化答案为1ans=1;intt;// 可用位置数// 计算初始可用位置数if(sum>n){t=n+1;// 如果颜色总数超过n,则t=n+1}else{t=n;// 否则t=n}// 计算排列方案数for(inti=1;i<=m;i++){// 调试输出// cout << "t a[i] " << t << ' ' << a[i] << endl;// 从t个位置中选择a[i]个位置放第i种颜色ans=(ans*c[t][a[i]])%mod;// 减少可用位置数t-=a[i];}// 输出结果cout<<ans<<endl;}return0;}

【运行结果】

3 3 2 1 2 3 3 2 1 3 4 5 3 1 3 1 20
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/14 4:44:48

Open-AutoGLM手机部署避坑指南:7个核心技巧助你绕开常见失败陷阱

第一章&#xff1a;Open-AutoGLM手机部署避坑指南概述在将 Open-AutoGLM 模型部署至移动端设备时&#xff0c;开发者常因环境配置、算力限制或模型兼容性问题遭遇失败。本章旨在系统梳理部署过程中高频出现的技术陷阱&#xff0c;并提供可落地的解决方案&#xff0c;帮助开发者…

作者头像 李华
网站建设 2026/6/13 20:54:04

Open-AutoGLM本地部署避坑指南:99%新手都会犯的3个错误

第一章&#xff1a;Open-AutoGLM 怎么部署在自己电脑上部署 Open-AutoGLM 到本地计算机需要准备合适的运行环境&#xff0c;并按照标准流程安装依赖与模型组件。整个过程适用于具备基础命令行操作能力的用户&#xff0c;支持主流操作系统如 Linux、macOS 以及 Windows&#xff…

作者头像 李华
网站建设 2026/6/19 9:30:41

VR消防安全知识竞赛:“燃”动智慧,“竞”学消防

VR消防安全知识竞赛打破传统消防教育的刻板模式&#xff0c;以“沉浸式体验多人竞技”为核心亮点&#xff0c;搭配专属按钮答题台&#xff0c;支持2至5人同步抢答。产品构成1. 一体机&#xff1a;搭载高清VR显示模块与高性能处理器&#xff0c;为体验者呈现沉浸式消防场景&…

作者头像 李华
网站建设 2026/6/23 20:43:03

为什么99%的人都搞不定Open-AutoGLM手机部署?这3大坑你踩过吗?

第一章&#xff1a;为什么99%的人都搞不定Open-AutoGLM手机部署&#xff1f;在尝试将 Open-AutoGLM 部署到移动设备时&#xff0c;绝大多数开发者会遭遇意料之外的失败。这并非因为模型本身复杂&#xff0c;而是由于部署链条中多个环节存在隐性门槛。硬件资源误判 许多用户低估…

作者头像 李华
网站建设 2026/6/18 7:50:09

Open-AutoGLM上手机,只需这4步!开发者必看的轻量化部署秘籍

第一章&#xff1a;Open-AutoGLM移动端部署概述Open-AutoGLM 是基于 AutoGLM 架构优化的轻量化大语言模型&#xff0c;专为在移动设备上实现高效推理而设计。该模型通过结构压缩、算子融合与硬件适配等技术&#xff0c;在保持较高自然语言理解能力的同时&#xff0c;显著降低计…

作者头像 李华
网站建设 2026/6/24 16:23:11

【大模型私有化部署新选择】:Open-AutoGLM本地化实施方案详解

第一章&#xff1a;Open-AutoGLM私有化部署的背景与意义随着企业对数据隐私和模型可控性的要求日益提升&#xff0c;大语言模型的私有化部署逐渐成为关键需求。Open-AutoGLM 作为一款开源的自动化生成语言模型&#xff0c;支持在本地环境或私有云中部署&#xff0c;确保敏感数据…

作者头像 李华