成绩比较

这道题目虽然是放在容斥原理题单里面的,但实际上用的是二项式反演(当然这东西也是由容斥原理推导出来的)

但是啦我已经很满足了,我自己已经推出了大部分的式子了,只是最后不会二项式反演而已

这种没什么思路的题目,我们先从小范围开始想起

我们假设只有一门课,那么我们从\(n-1\)个同学中选出\(k\)个人(\(C_{n-1}^k\)),表示这些人被B神碾压,那么剩下的\(n-1-k\)个人的成绩都严格大于B神。我们假设B神的成绩是\(g\),那么答案就是\(C_{n-1}^kg^{k}(u-g)^{n-1-k}\)(注意要满足B神的排名与被碾压的人数不矛盾)

现在我们来看看有两门课。我们先从第一轮考虑,我们先选出\(r_1-1\)个人(\(C_{n-1}^{r_1-1}\))表示这些人的成绩严格大于B神,那么剩下的\(n-r_1\)个人就是在这门课中成绩没有超过B神的人。那么我们对第二门课做同样的操作,然后我们来判断是否符合条件。我们发现,当一个人在两门课都没被选择的时候,他才会被B神碾压,也就是说,我们设第一门课中选出的\(r_1-1\)个人的集合是\(S_1\),第二门课选出的\(r_2-1\)个人的集合是\(S_2\),那么我们需要满足\(k=n-1-|S_1∪S_2|\)

然后我们推广到三门课,有\(k=n-1-|S_1∪S_2∪S_3|\),然后我们就可以推广到\(m\)门课了

也就是说,先选择\(k\)个人表示这\(k\)个人不在任何一个\(S_i\)里面,而且最后要有\(|∪S_i|=n-1-k\)

我们先选择\(k\)个人,很显然,为\(C_{n-1}^k\)

然后我们来考察满足\(|∪S_i|=n-1-k\)的所有的方案数,这东西就要用到二项式反演了。有关二项式反演

然后我们发现我们整体的结构就已经确认好了。假设我们现在已经有了B神的成绩,分别为\((g_1,g_2,...,g_m)\),那么选出的\(k\)个人的第\(i\)门课的成绩就有\(g_i\)种选择,没被选出来的\(n-1-k\)个人第\(i\)门课的成绩就有\(u_i-g_i\)种选择,我们根据乘法原理乘起来就好了(这其实是非常重要的一个点,感觉很多容斥的题目,或者说计数的题目,当结构不同的时候,贡献是一样的,所以我们只用计算结构的数量就好了,比如这道题目,我们并不关心这\(k\)个人具体是谁,因为只有数量是一样的,贡献就一样)

但是还有个问题,我们不可能枚举每一个\(g\),这个时候就可以看这篇题解

update 2024.5.3

没想到我居然把所谓的二项式反演自己推出来了。。还是挺开心的(当然具体的二项式反演还没有学,有空了学一下)

最后放的那篇题解有笔误,下文会说明

首先老规矩,跟上文叙述的思考过程一样,直接跳到二项式反演那里

其实现在就是要在剩下的\(n-1-k\)个人当中分配成绩,使得不存在任何一个人被B神碾压而且每门课都符合B神的排名

我们先忽略不被B神碾压的条件,来考虑每门课都符合B神的排名的所有的情况

那么总数显然就是\(\prod_{i=1}^mC_{n-1-k}^{r_i-1}(u_i-g_i)^{r_i-1}g_i^{n-k-r_i}\)。这个式子的意思是,依次考虑每门课,对于当前考虑的这门课,选出\(r_i-1\)个人,这些人的成绩严格大于B神

然后用容斥减掉不合法的情况。设\(P_i\)表示这\(n-1-k\)个人中第\(i\)个人被B神碾压的方案的集合,那么答案就是用上面说的总数减去\(|P_1∪P_2∪...∪P_{n-1-k}|\)

后面那个式子用容斥原理展开即得

\[\sum_{i=1}^{T}(-1)^{i-1}C_{n-1-k}^i(g_1g_2...g_m)^i\prod_{j=1}^mC_{n-k-1-i}^{r_j-1}(u_j-g_j)^{r_j-1}g_j^{n-k-i-r_j} \]

其中\(T\)是上界

这个式子的意思是,我们从\(n-1-k\)个人中选出\(i\)个人来表示这\(i\)个人被B神碾压(\(C_{n-1-k}^i\)),并且枚举他们的成绩(\((g_1g_2...g_m)^i\)),然后在按照最开始的选法依次考虑每一门课(\(\prod_{j=1}^mC_{n-k-1-i}^{r_j-1}(u_j-g_j)^{r_j-1}g_j^{n-k-i-r_j}\))即可

然后将三部分化简之后得到答案

\[C_{n-1}^k\times\prod_{j=1}^m(\sum_{g_j=1}^{u_j}g_j^{n-r_j}(u_j-g_j)^{r_j-1})\times\sum_{i=0}^{T}(-1)^{i}C_{n-1-k}^i\prod_{j=1}^mC_{n-k-1-i}^{r_j-1} \]

然后三个部分分别计算就好了

然后最后一个问题就是我们不可能枚举B神的成绩\(g_i\),怎么办?

实际上利用最后贴的题解就好了

我们只考虑某一门课\(i\),假设我们已经定下来了所有人的成绩,分别是\(h_1,h_2,...,h_n\),那么统计\(h\)中不同数字有多少个,记为\(t\)个,那么这\(t\)个数字肯定可以从\(u_i\)个数字中选出,即\(C_{u_i}^t\),然后我们就可以建立一个映射了。也就是说我们枚举\(t\),从\(u_i\)个数中选出\(t\)个数,然后让所有人的成绩只能从这\(t\)个数中选择,把所有情况加起来就是答案了。但是我们直接枚举的话不能保证我们选取了\(t\)个数之后,这\(t\)个数的每一个数都会被选择,此时要用题解中说的容斥去解决(而且这个容斥挺新的,可以学一学)。但是题解中的公式错了,

这个最后不要乘以\(C_u^t\),而是在统计答案的时候乘以\(C_u^t\),可以想一下为什么,具体见代码

posted @ 2024-03-15 18:15  最爱丁珰  阅读(4)  评论(0编辑  收藏  举报