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

news/2025/9/28 16:30:25/文章来源:https://www.cnblogs.com/kibrel/p/19117049

传送门

原题

题目描述

班上有 \(N\) 名同学,学号从 \(0\)\(N-1\)。有 \(M\) 种奖品要分给这些同学,其中,第 \(i\) 种奖品总共有 \(a_i\) 个 (\(i=0,1, \cdots ,M-1\))。

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

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

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

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

输入格式

第一行一个整数 \(T\),表示班级数量。

接下来 \(T\) 行,每行若干用单个空格隔开的正整数。首先是两个正整数\(N,M\),接着是 \(M\) 个正整数 \(a_0,a_1...a_{M-1}\)。保证 $N \le a_0+a_1+\cdots+a_{M-1} \le N+1 $。

输出格式

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

输入输出样例 #1

输入 #1

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

输出 #1

3
4
20

输入输出样例 #2

输入 #2

5
100 1 100
100 1 101
20 2 12 8
123 4 80 20 21 3
999 5 101 234 499 66 99

输出 #2

1
1
125970
895031741
307187590

说明/提示

样例解释 1

对于第 \(1\) 个班级,学号为 \(0,1,2\) 的同学可以依次分别获得奖品 \(0,1,1\),也可以依次分别获得奖品 \(1,0,1\),也可以依次分别获得奖品 \(1,1,0\) ,因此共有 \(3\) 种方案。

对于第 \(2\) 个班级,学号为 \(0,1,2\) 的同学可以依次分别获得奖品 \(0,1,1\) ,也可以依次分别获得奖品 \(1,0,1\),也可以依次分别获得奖品 \(1,1,0\),也可以依次分别获得奖品 \(1,1,1\),因此共有 \(4\) 种方案。

对于第 \(3\) 个班级,可以把编号为 \(0\) 的奖品分配给 \(5\) 名同学中的任意一名,共有 \(5\) 种方案;再把编号为 \(2\) 的奖品分配给剩余 \(4\) 名同学中的任意一名,共有\(4\) 种方案;最后给剩余 \(3\) 名同学自然获得 \(1\) 号奖品。因此,方案数为 \(5 \times 4 = 20\)

数据范围

对于 \(30\%\) 的测试点,保证 \(N \le 10\)

对于另外 \(30\%\) 的测试点,保证 \(M=2\)

对于所有测试点,保证 \(N \le 1000\);保证 \(T \le 1000\) ;保证 \(M \le 1001\)

整理&思路

因为每个人只要一个奖品,所以我们按奖品分类。
假设我们一共有\(sum\)个奖品,针对第\(i\)种奖品,我们需要有\(a_{i}\)个小朋友来拿走奖品,而根据组合数可得:

\[f(i) = C\binom{a_{i}}{sum} \]

而所有的奖品的总组合数就是:

\[ans = \prod_{i=1}^{m} C\binom{a_{i}}{sum} \]

当然,此时的\(sum\)是不断改变的,每取一次\(sum\)就要减少一次\(a_{i}\)

然而,常规的组合数肯定是会崩的,这时候就要请出杨辉三角了:

\[C\binom ij = C\binom {i-1}j + C\binom i{j-1} \]

当然,\(j\leq i\)\(j=1时C \binom ij=1\)

当然,你还需要做这样的一个处理:

sum = n + (sum>n);

以确保分配的时候有一个或零个剩余。

AC代码:

#include <bits/stdc++.h>
#define int long long
using namespace std;const int maxn = 1010;
const int mod = 1e9 + 7;int a[maxn], C[maxn][maxn];//杨辉三角
void init() {for (int i = 0; i < maxn; i++) {for (int j = 0; j <= i; j++) {if (j == 0 || j == i) C[i][j] = 1;else C[i][j] = (C[i - 1][j] + C[i - 1][j - 1]) % mod;}}
}
signed main() {init();int T;scanf("%lld", &T);while(T--) {int n, m;scanf("%lld%lld", &n, &m);int sum = 0;for (int i = 1; i <= m; i++) {scanf("%d", &a[i]);sum += a[i];}sum=n+(sum>n);int ans = 1;for (int i = 1; i <= m; i++) {ans = (ans * C[sum][a[i]]) % mod; // 分配礼物的组合方法sum -= a[i]; // 分配一次礼物就减少一次}printf("%lld\n", ans);}return 0;
}

恭喜AC!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/920829.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

P10400 『STA - R5』消失的计算机

传送门 原题 题目描述 本题为提交答案题。 后台有一个正整数 \(n\)(你不知道 \(n\) 具体的值)。 你有 \(10^3\) 个变量 \(p_1,p_2,\cdots,p_{10^3}\),初始 \(p_1=n\),\(p_2=p_3=\cdots=p_{10^3}=0\)。 你需要写一个…

2025 地坪研磨机厂家推荐权威推荐排行榜:品牌深度解析及格力 / 宁德时代合作案例速递水磨石/遥控式/座驾式/小型地坪研磨机厂家推荐

伴随城市更新与智能制造升级,环氧地坪、固化混凝土等工程对研磨设备的精度、效率与稳定性提出严苛要求,地坪研磨机市场需求年均复合增长率达 3.5%。但市场中产品质量悬殊,动力不足、精度偏差、售后滞后等问题频发,…

太原网站建设 网站制作wordpress3.9主题

一、仅需实现在线预览&#xff0c;且文件地址公网可访问 &#xff08;一&#xff09;微软office免费预览&#xff08;推荐&#xff09; 支持doc/docx/xls/xlsx/ppt/pptx等多种office文件格式的免费预览 //示例代码//​在https://view.officeapps.live.com/op/view.aspx?src…

中国工信备案查询网站免费自动刷访客量

traceroute 是用来检测发出数据包的主机到目标主机之间所经过的网关数量的工具。traceroute 的原理是试图以最小的TTL发出探测包来跟踪数据包到达目标主机所经过的网关&#xff0c;然后监听一个来自网关ICMP的应答。发送数据包的大小默认为 38个字节。 通过traceroute我们可以知…

2025 年最新推荐铝塑膜源头厂家权威排行榜:聚焦 3000㎡厂房与完整产业链的优质企业盘点复合/防锈防潮/木箱包装/设备包装铝塑膜厂家推荐

在当前工业包装领域,铝塑膜因高阻隔、耐穿刺、密封性强等特性,已成为木箱包装、货运物流、化工储存等行业长途运输与长期保存货物的核心材料。但市场现状却不容乐观,大量厂家存在基材质量差、工艺精度低、定制能力弱…

2025 年真空袋生产厂家最新权威推荐排行榜:TOP 级企业工艺、服务及适配场景全景对比指南木箱/设备/海运防潮/铝塑/电柜真空袋厂家推荐

在工业产品仓储运输环节,包装防护失效引发的问题日益凸显 —— 潮湿导致精密部件锈蚀、穿刺造成化工原料泄漏、密封不佳引发货物变质,不仅带来直接经济损失,更严重影响供应链稳定性。当前市场上真空袋厂家工艺水平悬…

《码界飞升传II:数据星辰异界问道》

【第一卷大数据筑基】 第1章:HDFS剑阵!分布式存储定乾坤 第2章:YARN御兽!资源调度的万兽谱 第3章:MapReduce证道!分而治之的无上心法 第4章:Hive悟道!SQL化繁为简的通天梯 【第二卷NoSQL风云】 第5章:HBase觉…

Win FAQ

Win11 FAQ win11 在白色编辑区域鼠标光标消失不见 win+r调用命令窗口,输入control硬件和声音,点击鼠标鼠标属性->指针->文本选择,选择如图所示beam_r.cur,然后应用

结论(数学)

对于已知函数 \(f(x)\) 和已知直线 \(g(x)=kx+b\),当 \(f(x_0)-g(t_0)\) 取到最小值或最大值时存在 \(h(x)=kx+b_1\) 与 \(f(x)\) 相切于横坐标为 \(t\) 的点。

昆山做网站费用黄岩网站建设

java读取操作系统环境变量import java.util.*;import java.io.*;class SysProb{//返回当前系统变量的函数&#xff0c;结果放在一个Properties里边&#xff0c;这里只针对win2k以上的&#xff0c;其它系统可以自己改进public Properties getEnv() throws Exception{Properties …

网站推荐免费的创意logo一键生成器软件免费

[html] 怎样避免让用户看到长时间的白屏&#xff1f; 我觉得&#xff0c;实际解决办法需要结合用户体验和性能优化这两个指标来说&#xff1a;1、用户体验可以使用骨架屏来减少页面白屏&#xff0c;骨架屏也具有更好的loading效果。2、假如1个页面里面有很多很多网络请求&…

郴州网站设计欧美一级A做爰片成电影网站

随着 React 19 的发布即将到来&#xff0c;它承诺带来一些令人期待的新功能。这个版本不仅仅是又一个更新&#xff0c;而是被寄予厚望&#xff0c;将重新定义我们对待 React 代码的方式。承诺提供增强的速度、效率和更流畅的编码体验&#xff0c;React 19 正准备将 Web 开发提升…

检察网站建设请示wordpress 模板 设计

2.1.1 IoC是什么 Ioc—Inversion of Control&#xff0c;即“控制反转”&#xff0c;不是什么技术&#xff0c;而是一种设计思想。在Java开发中&#xff0c;Ioc意味着将你设计好的对象交给容器控制&#xff0c;而不是传统的在你的对象内部直接控制。如何理解好Ioc呢&#xff1…

loki收集容器日志

Loki介绍Loki 是 Grafana Labs 开源的日志聚合系统,常被称为 “日志界的 Prometheus”。它的设计理念是只索引元数据,不索引完整日志内容,结合 Promtail 和 Grafana,就能实现高效的日志采集、存储与可视化。与传统…

Xcode 火焰图

Xcode - > open developer tool -> time profile -> target -> protile 如果没有符号化,多试几次 判断力是一个人最重要的能力

完整教程:Nginx反向代理与缓存功能

完整教程:Nginx反向代理与缓存功能2025-09-28 16:18 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !imp…

完整教程:dlib库关键点定位和疲劳检测

完整教程:dlib库关键点定位和疲劳检测pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mon…

网站改版对优化的影响福建省住房和城乡建设厅的网站

MySQL大事务可能会导致过多的占用临时文件&#xff0c;导致磁盘空间撑满的问题 本例说明下binlog cache产生的临时文件 案例复现 调小binlog_cache_size&#xff0c;让DML使用临时文件 使用存储过程模拟大事务 创建表 create table t1( id int AUTO_INCREMENT, name varchar…

2025 长沙美食餐厅权威推荐排行榜:老店红记领衔新晋品牌,200 + 湘味与网红菜品深度解析,吃货必藏指南长沙美食湘菜馆 /大排档/网红店餐厅推荐

长沙餐饮市场在 “网红经济” 与 “传统坚守” 的碰撞中持续升温,却也暗藏选择困境:部分老店虽有口碑但创新不足,新兴品牌中不乏跟风炒作、食材劣质的 “短命网红”,更有商家混用预制菜、忽视食品安全,让消费者难…

千图app的下载方式搜索引擎优化推广

文章目录 1. python图形界面开发1.1. Python图形界面开发——Tkinter1.2. Python图形界面开发——PyQt1.3. Python图形界面开发——wxPython1.4. Python图形界面开发—— PyGTK&#xff1a;基于GTK1.5. Python图形界面开发—— Kivy1.6. Python图形界面开发——可视化工具1.7. …