题目传送门。

看了题解才发现我有多蠢。

我的做法真是唐完了。

在此之前请学习扩展欧几里得定理和扩展欧几里得定理求逆元。

发现奖品要么 \(N\) 个,要么 \(N+1\) 个,于是分类讨论,当奖品只有 \(N\) 个的时候,显然所有奖品都要分给学生,那相当于有 \(N!\) 种分法,但是你会发现有重复部分,实际上比如奖品 \(2\) 号有两个,奖品 \(1\) 号只有一个,奖品 \(3\) 号有三个,那么其实只有 \(\frac{6!}{2! \times 3!}\) 种分法,所以分法数量就是 \(\frac{(\sum_{i = 1}^m a_i)!}{\prod_{i = 1}^m (a_i!)}\),由于答案会很大,需要取模,所以我们要求出每个 \(a_i!\) 在模 \(10^9+7\) 意义下的逆元,然后拿 \(N!\) 乘上每个 \(a_i\) 的逆元。然后第二种情况是有 \(N+1\) 个奖品,其实你会发现没啥区别,我们只需要枚举哪个奖品的其中一个不选(因为一个奖品可能会有很多个),其它的都选不就行了吗,当然,原本我们计算的是所有奖品都选的方案数,\(x\) 这个奖品的其中一个不选的话我们会发现我们求的答案多除了一个 \(a_x\),所以每次我们只需拿 \((N+1-1)!\) 乘 \(a_x\) 就行了(减 \(1\) 是因为我们应该选 \(N\) 个奖品,但是总共有 \(N+1\) 个奖品,前面为了方便理解才说求的是所有奖品都选的方案数,但是为了让代码更好写,还是减 \(1\) 比较好,当然你可以不减 \(1\),然后每次枚举的答案再除以 \(N+1\) 就行了)。

代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N = 1e3+5;
const int mod = 1e9+7;
int x,y;
int a[N];
void exgcd(int a,int b,int &x,int &y)
{
if(!b)
{
x = 1;
y = 0;
return;
}
exgcd(b,a%b,y,x);
y-=a/b*x;
}
int jie[N];
int fac[N];
signed main()
{
jie[0] = 1;
for(int i = 1;i<=1001;i++)
{
jie[i] = jie[i-1]*i%mod;
}
for(int i = 0;i<=1001;i++)
{
exgcd(jie[i],mod,x,y);
x = (x%mod+mod)%mod;
fac[i] = x;
}
int _;
scanf("%lld",&_);
while(_--)
{
int n,m;
scanf("%lld %lld",&n,&m);
int sum = 0;
for(int i = 1;i<=m;i++)
{
scanf("%lld",&a[i]);
sum+=a[i];
}
if(sum == n+1)
{
int num = jie[sum-1],ans = 0;
for(int i = 1;i<=m;i++)
{
num = num*fac[a[i]]%mod;
}
for(int i = 1;i<=m;i++)
{
ans = (ans+num*a[i]%mod)%mod;
}
printf("%lld\n",ans);
}
else
{
int ans = jie[sum];
for(int i = 1;i<=m;i++)
{
ans = ans*fac[a[i]]%mod;
}
printf("%lld\n",ans);
}
}
return 0;
}

好愚蠢的复杂办法啊,如果大家想看更简单的做法,戳这里(毕竟这题才黄题,扩展欧几里得的模版都绿了)

洛谷P10112 [GESP202312 八级] 奖品分配 题解的更多相关文章

  1. 洛谷P1854 花店橱窗布置 分析+题解代码

    洛谷P1854 花店橱窗布置 分析+题解代码 蒟蒻的第一道提高+/省选-,纪念一下. 题目描述: 某花店现有F束花,每一束花的品种都不一样,同时至少有同样数量的花瓶,被按顺序摆成一行,花瓶的位置是固定 ...

  2. HAOI2006 (洛谷P2341)受欢迎的牛 题解

    HAOI2006 (洛谷P2341)受欢迎的牛 题解 题目描述 友情链接原题 每头奶牛都梦想成为牛棚里的明星.被所有奶牛喜欢的奶牛就是一头明星奶牛.所有奶 牛都是自恋狂,每头奶牛总是喜欢自己的.奶牛之 ...

  3. 洛谷P3412 仓鼠找$Sugar\ II$题解(期望+统计论?)

    洛谷P3412 仓鼠找\(Sugar\ II\)题解(期望+统计论?) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1327573 原题链接:洛谷P3412 ...

  4. 洛谷P3502 [POI2010]CHO-Hamsters感想及题解(图论+字符串+矩阵加速$dp\&Floyd$)

    洛谷P3502 [POI2010]CHO-Hamsters感想及题解(图论+字符串+矩阵加速\(dp\&Floyd\)) 标签:题解 阅读体验:https://zybuluo.com/Junl ...

  5. BZOJ4946 & 洛谷3826 & UOJ318:[NOI2017]蔬菜——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=4946 https://www.luogu.org/problemnew/show/P3826 ht ...

  6. 洛谷1578:[WC2002]奶牛浴场——题解

    https://www.luogu.org/problemnew/show/P1578#sub 由于John建造了牛场围栏,激起了奶牛的愤怒,奶牛的产奶量急剧减少.为了讨好奶牛,John决定在牛场中建 ...

  7. 洛谷P2460 [SDOI2007]科比的比赛(题解)(贪心+搜索)

    科比的比赛(题解)(贪心+搜索) 标签:算法--贪心 阅读体验:https://zybuluo.com/Junlier/note/1301158 贪心+搜索 洛谷题目:P2460 [SDOI2007] ...

  8. 洛谷 P1146 【硬币翻转】题解

    很久很久之前做过的一道题 翻n-1枚硬币,就是有一枚不翻,也可以理解为翻一枚 直接上程序,看程序说话 #include<iostream> using namespace std; ; b ...

  9. 洛谷P1972 [SDOI2009]HH的项链 题解

    [SDOI2009]HH的项链 题目背景 无 题目描述 HH 有一串由各种漂亮的贝壳组成的项链.HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义.HH 不 ...

  10. 洛谷 p1352 没有上司的舞会 题解

    P1352 没有上司的舞会 题目描述 某大学有N个职员,编号为1~N.他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司.现在有个周年庆宴会,宴会每邀请来一个职员 ...

随机推荐

  1. 如何在BASH中将制表符分隔值(TSV)文件转换为逗号分隔值(CSV)文件?(How do I convert a tab-separated values (TSV) file to a comma-separated values (CSV) file in BASH?)

    我有一些TSV文件需要转换为CSV文件. BASH中是否有任何解决方案,例如使用awk来转换这些?我可以这样使用sed,但担心它会出错: sed 's/\t/,/g' file.tsv > fi ...

  2. 龙哥量化:缠中说禅(缠论)K线包含处理

    声明:看到研究非常细致深入的文章,转载到我的博客园,以便学习和研究. (转载知乎的DennisWin) 缠中说禅技术理论包括两大部分:缠论形态学和缠论动力学.其中形态学是根本,动力学是辅助.缠论形态学 ...

  3. Qt开发经验小技巧226-230

    qtc开发工具内置了不少的函数,可以很方便的进行一些判断和处理. //最小版本要求 !minQtVersion(5, 15, 2) { message("Cannot build Qt In ...

  4. 关于Qt几百个版本无法兼容的深度思考

    关于Qt众多版本(至少几百个)都不兼容的问题,在经过和Qt中国的林斌大神和其他大神(Qt非官方技术交流群)头脑风暴以后,最终得出以下的结论. Qt在二进制兼容这块,已经做了最大的努力,通过将各种代码细 ...

  5. 祝大家这周圣诞快乐!!本周进军多模态!😀From LLMs to MLLMs:😜Exploring the Landscape of Multimodal Jailbreaking

    从LLMs到MLLMs:探索多模态越狱攻击的前景 禁止盗用,侵权必究!!!欢迎大家积极举报 ①脆弱性代表:越狱攻击(恶意指令/训练&解码干预). ②最近的越狱攻击: 整体说:构建越来越复杂场景 ...

  6. [转]idea中创建maven的Javaweb工程并进行配置(图文教程)

    原文链接: idea中创建maven的Javaweb工程并进行配置(图文教程)

  7. Android保活从入门到放弃:乖乖引导用户加白名单吧(附7大机型加白示例)

    1.引言 IM在Android上的保活问题经常在即时通讯网的论坛和技术群里被讨论,自从Android 8.0后系统大大降低了后台运行应用的保活容忍度(详见<Android P正式版即将到来:后台 ...

  8. Matlab深度学习

    View image files Instructions are in the task pane to the left. Complete and submit each task one at ...

  9. MySQL事务ACID-隔离级别-锁介绍

    ⑴ 原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,这和前面两篇博客介绍事务的功能是一样的概念,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则 ...

  10. KKRT-PSI

    KKRT库:https://github.com/osu-crypto/BaRK-OPRF 文章:Efficient Batched Oblivious PRF with Applications t ...