首页 > 其他分享 >B. cats 的随机原神

B. cats 的随机原神

时间:2024-08-28 11:18:13浏览次数:3  
标签:原神 frac nm ni sum cats im 随机 binom

题意

有 \(n\) 个颜色,每个颜色有 \(m\) 个球。在这 \(nm\) 个球中摸球,不放回,问取完每一种颜色的 \(m\) 个球的期望次数。


思路

方法:Min-Max 容斥

我们记 $$\binom{a}{b{m}}=\binom{a}{\underbrace{m,m,\cdots,m}_{b个m}}=\frac{a}{(m!)^b}$$

为把 \(a\) 个数分成 \(b\) 组,每组 \(m\) 个的方案数。其中 \(a=bm\)。

那么显然的,总方案数为:

\[\binom{nm}{n\{m\}} \]

我们考虑取完第 \(i\) 种颜色的时间为 \(x_i\),则答案为 \(E(\min(\{x_i\}))\)。

那么可以用 Min-Max 容斥。由于每种颜色本质是一样的,所以我们只枚举取完的颜色个数。于是:

\[E(\min(\{x_i\}))=\sum_{i=1}^n(-1)^{i+1}\binom niE(\max(\{x_1,\cdots,x_i\})) \]

现在枚举最后一个球出现的时刻,则有:

\[\begin{align*} E(\min(\{x_i\}))=&\sum_{i=1}^n(-1)^{i+1}\binom niE(\max(\{x_1,\cdots,x_i\}))\\ =&\sum_{i=1}^n(-1)^{i+1}\binom ni\binom{nm}{n\{m\}}^{-1}\sum_{j\le nm}j\binom{j-1}{im-1}\binom{im}{i\{m\}}\binom{(n-i)m}{(n-i)\{m\}}\\ =&\sum_{i=1}^n(-1)^{i+1}\binom ni\binom{nm}{n\{m\}}^{-1}\binom{im}{i\{m\}}\binom{(n-i)m}{(n-i)\{m\}}\sum_{j\le nm}j\binom{j-1}{im-1}\\ =&\sum_{i=1}^n(-1)^{i+1}\binom ni\frac{im!(nm-im)!}{nm!}\sum_{j\le nm}j\binom{j-1}{im-1}\\ =&\sum_{i=1}^n(-1)^{i+1}\binom ni\binom{nm}{im}^{-1}\sum_{j\le nm}j\binom{j-1}{im-1}\\ =&\sum_{i=1}^n(-1)^{i+1}\binom ni\binom{nm}{im}^{-1}\sum_{j\le nm}im\binom{j}{im}\\ =&\sum_{i=1}^n(-1)^{i+1}\binom ni\binom{nm}{im}^{-1}im\sum_{j\le nm}\binom{j}{im}\\ =&\sum_{i=1}^n(-1)^{i+1}\binom ni\binom{nm}{im}^{-1}im\binom{nm+1}{im+1}\\ =&\sum_{i=1}^n(-1)^{i+1}\binom niim\frac{nm+1}{im+1}\\ =&(nm+1)\sum_{i=1}^n(-1)^{i+1}\binom ni\frac{im}{im+1}\\ =&(nm+1)\sum_{i=1}^n(-1)^{i+1}\binom ni\left(1-\frac{1}{im+1}\right)\\ =&(nm+1)\left(\sum_{i=1}^n(-1)^{i+1}\binom ni-\sum_{i=1}^n(-1)^{i+1}\binom ni\frac{1}{im+1}\right)\\ =&(nm+1)\left(\sum_{i=0}^n(-1)^{i+1}\binom ni+1-\sum_{i=0}^n(-1)^{i+1}\binom ni\frac{1}{im+1}-1\right)\\ =&(nm+1)\left(-\sum_{i=0}^n(-1)^{i}\binom ni-\sum_{i=0}^n\binom ni\frac{(-1)^{i+1}}{im+1}\right)\\ =&(nm+1)\left(-[n=0]-\sum_{i=0}^n\binom ni\frac{(-1)^{i+1}}{im+1}\right)\\ =&(nm+1)\left(-\sum_{i=0}^n\binom ni\frac{(-1)^{i+1}}{im+1}\right)\\ =&(nm+1)\sum_{i=0}^n\binom ni\frac{(-1)^{i}}{im+1}\\ \end{align*} \]

根据《具体数学》中 5.3 处理的技巧 中的式子有:

\[\sum_{i=0}^n\binom ni\frac{(-1)^i}{i+x}=\frac{n!}{x(x+1)\cdots(x+n)}=x^{-1}\binom{x+n}{n}^{-1} \]

所以

\[\begin{align*} E(\min(\{x_i\}))=&(nm+1)\sum_{i=0}^n\binom ni\frac{(-1)^{i}}{im+1}\\ =&\frac{nm+1}{m}\sum_{i=0}^n\binom ni\frac{(-1)^{i}}{i+\frac 1m}\\ =&\frac{nm+1}{m}\cdot\frac{n!}{\frac 1m(\frac 1m+1)\cdots(\frac 1m+n)}\\ =&\frac{nm+1}{m}\cdot\frac{n!m^{n+1}}{(m+1)(2m+1)\cdots(nm+1)}\\ =&\frac{(nm+1)n!m^n}{\prod_{i=1}^n(im+1)}\\ \end{align*} \]

使用快速阶乘算法计算 \(\prod_{i=1}^n(im+1)\),分段打表计算 \(n!\) 即可。

标签:原神,frac,nm,ni,sum,cats,im,随机,binom
From: https://www.cnblogs.com/ninler/p/18384102

相关文章

  • 主成分分析结合遗传算法优化的随机森林通用代码
    importpandasaspdfromsklearn.preprocessingimportStandardScalerfromsklearn.decompositionimportPCAfromsklearn.ensembleimportRandomForestClassifier,RandomForestRegressorfromsklearn.metricsimportaccuracy_score,mean_squared_error,mean_abso......
  • 在array.orderby C#上获得随机顺序
    原文链接:https://cloud.tencent.com/developer/information/%E5%A6%82%E4%BD%95%E5%9C%A8array.orderby%20C%23%E4%B8%8A%E8%8E%B7%E5%BE%97%E9%9A%8F%E6%9C%BA%E9%A1%BA%E5%BA%8F在C#中,要在数组(array)的OrderBy方法中获得随机顺序,可以使用Random类来生成一个随机数作为排序的依据......
  • 利用随机森林对特征重要性进行评估
    参考资料:https://blog.csdn.net/zjuPeco/article/details/773716453特征重要性评估现实情况下,一个数据集中往往有成百上前个特征,如何在其中选择比结果影响最大的那几个特征,以此来缩减建立模型时的特征数是我们比较关心的问题。这样的方法其实很歹,比如主成分分析,lasso等等。不过......
  • cats 的最小生成树
    开300000个并查集固然会空间超限,但考虑到每个并查集内部都存在着大量的空间浪费,因此你完全可以实现“动态开点”并查集点击查看代码#include<bits/stdc++.h>usingnamespacestd;intfa[700005],s[700005],u[300005],v[300005],ans[300005];unordered_map<longlong,int>......
  • cats 的数据结构
    相信OI美学点击查看代码#include<bits/stdc++.h>usingnamespacestd;vector<int>a[200005];intf[200005],s[200005],ansa[200005],ansb[200005];voiddp(intn1){s[n1]=1;f[n1]=n1;for(inti=0;i<a[n1].size();i++){dp(a[n1][......
  • Python集成学习和随机森林算法使用详解
    概要集成学习是一种通过组合多个模型来提高预测性能的机器学习方法。它通过将多个弱学习器的结果结合起来,形成一个强学习器,从而提升模型的准确性和稳健性。随机森林(RandomForest)是集成学习中一种非常流行且有效的算法,特别适用于分类和回归任务。本文将详细介绍Python中如何......
  • Oracle_取随机数函数的常用方法
    1、从表中随机取记录SELECT*FROM(SELECT*FROMSDXJ.TEST_01ORDERBYDBMS_RANDOM.random)WHEREROWNUM<5;表示从SDXJ.TEST_01表中随机取4条记录2、产生随机数产生一个任意大小的随机数:SELECTDBMS_RANDOM.RANDOMFROMDUAL;产生......
  • c++随机生成图画
    话不多说直接上代码:#include<bits/stdc++.h>#include<windows.h>#include<stdlib.h>#include<cstdio>#include<iostream>#include<string>#include<stdio.h>#include<ctime>#include<conio.h>#include<time.h>......
  • 《机器学习》—— 随机森林实现二分类问题
    文章目录一、什么是随机森林二、随机森林的主要特点三、随机森林参数四、案例的代码实现一、什么是随机森林随机森林(RandomForest)是一种集成学习方法,属于监督学习算法,主要用于分类和回归任务。它通过在数据集的多个子集上构建多个决策树,并输出这些树预测结果的众数(......
  • 机器学习:随机森林决策树学习算法及代码实现
    1、概念        随机森林(RandomForest)是一种集成学习方法,它通过构建多个决策树来进行分类或回归预测。随机森林的核心原理是“集思广益”,即通过组合多个弱学习器(决策树)的预测结果来提高整体模型的准确性和健壮性。2、集成学习(EnsembleLearning):        集......