首页 > 其他分享 >CW高中-C0486A

CW高中-C0486A

时间:2024-02-20 20:33:07浏览次数:21  
标签:高中 int 种牌 sum C0486A 抽出 Mv CW mod

Problem

给定 \(n\) 种牌,每种牌抽出的概率相同。集齐所有种类的卡牌时停手。

设有 \(k\) 种牌恰好只被抽中过一次,求 \(k\) 的幂次的期望(不是期望的幂次)。

即求出 \(E[k],E[k^2],\cdots,E[k^m]\),对输入的质数 \(P\) 取余。

\(n\le 3\times 10^5,m\le 200,9\times 10^8<P\le10^9+7\)。

Solution

设 \(A_i\) 表示 \(i \text{ 恰好出现一次}\) 这样一个事件,\(I_i=[A_i]\),其中 \([]\) 是艾佛森括号,显然 \(E(I_i)=P(A_i)\)。

记 \(X\) 表示恰好只被抽中一次的牌数

考虑平方的组合意义,就是选了 \((i,j)\) 的有序对,使得第 \(i,j\) 种牌都恰好出现一次,这样对数的期望个数就是平方的意义。

因此有:

\[X^2=\sum_{i=1}^n\sum_{j=1}^nI_iI_j \\ \begin{aligned} E(X^2)&=\sum_{i=1}^n\sum_{j=1}^nP(A_iA_j) \\ &=2\sum_{i=1}^n\sum_{j=i+1}^nP(A_iA_j)+\sum_{i=1}^nP(A_i)\\ &=2E(\tbinom{X}{2})+E(X) \end{aligned} \]

不难发现:

\[E(X^m)=\sum_{1\le i_1,i_2\cdots, i_k\le n}P(A_{i_1}A_{i_2}\cdots A_{i_k}) \\ E(\tbinom{X}{k})=\sum_{i_1<i_2<\cdots<i_k}P(A_{i_1}A_{i_2}\cdots A_{i_k}) \\ E(X^m)=\sum_{k=0}^m k!S(m, k)E(\tbinom{X}{k}) \]

其中 \(S(m,k)\) 是第二类斯特林数,这是基本的组合学知识。

而 \(P(A_{i_1}\cdots A_{i_k})\) 可以通过递推得到。值得一提的是,因为递推中的转移可能会指向自身,因此需要用到扰动甚至有限微积分求出一个系数。具体可以设计一个函数 \(f(i,j)\) 表示已抽出 \(i\) 张牌,\(j\) 张恰好抽出了一次。转移是简单的。

另外,值得一提的是当 \(m=1\) 时的一种巧妙做法。

考虑按第一次抽出某种牌的前后顺序来顺次考虑,会发现这样显然期望是不变的。

那么考虑第 \(i\) 种牌仅抽出一次的概率是多少。考虑第 \(i\) 种牌仅抽出一次的方案集合,考虑把抽出这张牌的抽卡轮次与抽出最后一张牌的抽卡轮次交换,方案构成了双射,因此他作为最后一张牌被抽出的概率和这种牌只被抽出过一次的概率应该是相同的,都为 \(\frac{1}{n-i+1}\)。

因此 \(m=1\) 时答案为 \(\sum_{i=1}^n\frac{1}{i}\)。

Code

时间很极限所有多数人使用 \(\text{Barrent}\) 处理计算,这份代码是卡常过的,最好还是写写 \(\text{Barrent}\)。

// Not afraid to dark.

#include <bits/stdc++.h>
using namespace std;

#define int unsigned int

const int Nv = 3e5, Mv = 2e2;
int n, m, mod;
int inv[Nv + 5];
int C[Nv + 5][Mv + 5], S[Mv + 5][Mv + 5], ans[Mv + 5];

signed main (){
    scanf ("%u%u%u", &n, &m, &mod);
    inv[1] = 1;
    for (int i = 2;i <= max (n, m);++ i)
        inv[i] = 1ull * inv[i - mod % i] * (mod / i + 1) % mod;
    C[0][0] = 1;
    unsigned long long kd = 1;
    for (int i = 0;i < n;++ i){
        for (int j = min (m, i);;-- j){
            if (C[i][j] >= mod)
                C[i][j] -= mod;
            unsigned long long p = 1ull * C[i][j] * inv[n - i + j] % mod;
            C[i + 1][j] += p;
            C[i + 1][j + 1] += p;
            if (! j)
                break;
        }
        kd = kd * (n - i) % mod;
    }
    for (int i = 0;i <= m;++ i)
        C[n][i] = C[n][i] * kd % mod;
    S[0][0] = 1;
    for (int i = 1;i <= m;++ i)
        for (int j = 1;j <= i;++ j)
            S[i][j] = (S[i - 1][j - 1] + 1ull * S[i - 1][j] * j % mod) % mod;
    for (int i = 1;i <= m;++ i){
        for (int j = 0, k = 1;j <= i;k = 1ull * k * (++ j) % mod)
            ans[i] = (ans[i] + 1ull * k * S[i][j] % mod * C[n][j] % mod) % mod;
        printf ("%u\n", ans[i]);
    }
    return 0;
}

标签:高中,int,种牌,sum,C0486A,抽出,Mv,CW,mod
From: https://www.cnblogs.com/imcaigou/p/18023993

相关文章

  • 农村高中生源转型期提升学生二次函数建模能力的课堂探究
       良好的教学情境是促使学生开展主动思考和深度学习活动的重要保障。数学知识都源于现实生活,所以在培养高中生建模思想与意识期间,除了注意结合数学教材中的相关内容之外,也要注意紧密联系学生的实际生活。因为建模思想的应用都建立在对生活中实际问题的抽象化表达上,所以如果......
  • Asp .Net Core 系列:Asp .Net Core 集成 Panda.DynamicWebApi
    目录简介Asp.NetCore集成Panda.DynamicWebApi配置原理什么是POCOController?POCO控制器原理ControllerFeatureProvider实现自定义判断规则IApplicationModelConventionPanda.DynamicWebApi中的实现ConfigureApiExplorer()ConfigureSelector()ConfigureParameters()简介Panda......
  • 农村高中生源转型期提升学生二次函数建模能力的课堂探究
       通过结合具体的数学问题,引导高中生深入分析问题,有效地构建求解问题的数学模型,可以使学生逐步掌握数学问题求解的基本思路以及模型建构的方法与注意事项。但是离开了反复训练,无法从根本上提升高中生的数学建模能力。因此,在平时的高中数学教学中,教师要注意结合数学教学的内......
  • 【数学】以普通高中生的眼光深入牛顿迭代法
    Newton'smethodforfindingroots目录目录前言&前置知识基础应用:手动开方优化:牛顿下山法闲话前言&前置知识前置知识:导数的定义与基本运算如今whk确确实实讲了牛顿法,就是那个切线求导数近似解,效率是二分法的忘了多少倍。(不觉得这很酷吗)那么牛顿迭代到底有没有比课本......
  • AcWing 5466. 随机排列 题解
    讲解都在代码里了#include<bits/stdc++.h>//可以发现不管n怎么取,3n和7n+1都是一个奇数一个偶数//那么那么我们用最多n-1次交换将数组复原看一看用了奇数次还是偶数次就可以看出来了//这种交换方式常见于基础课内容,是两个数组互为双向usingnamespacestd;constintN=1e......
  • Acwing第 141 场周赛
    A题签到模拟即可B题单独考虑每一个a[i],如果i要是答案需要指针移动多少次,然后算完,排个序,指针移动最少的就是答案。#include<bits/stdc++.h>#defineintlonglong#definerep(i,a,b)for(inti=(a);i<=(b);++i)#definefep(i,a,b)for(inti=(a);i>=(b);--i)......
  • 一个高中牲的自白
    在书店看到了新版的《万寿寺》《寻找无双》。想到自己家里的《万寿寺》还是盗版的,这种我愿意带着在紫砂之前看一遍的书居然是盗版的,便联想到自己的人生。也是盗版的……在大多数人眼里,不过是一个笑话而已……可能那本拼ξξ盗版书我会一直保留着,直到它自己烂掉,就像我对自己生命的......
  • AcWing 520. 子串 题解
    ps:觉得这编号很特殊就做了一下题目传送门算法(线性DP,前缀和)\(O(nmk)\)首先考虑如何DP,然后再考虑如何优化。状态表示:f[i,j,k]表示只用S的前i个字母,选取了k段,可以匹配T的前j个字母的方案数。状态计算:将f[i,j,k]表示的所有方案分成两大类:不用S[i],则方案数是f[i-1,......
  • AcWing 3721. 求30的倍数 题解
    传送门stoi这里我们来了解一个函数\(stoi\)作用是将\(n\)进制的字符串转化为十进制,使用时包含头文件\(string\)定义如下:intstoi(conststd::string&str,std::size_t*pos=nullptr,intbase=10);参数:\(str\)-待转换的字符\(pos\)-其取值可以是一个空字......
  • 高中名师暗访录之--1.1 新学年如何学好高中物理?
    关注Alex物理猿,结尾有彩蛋哦!2023年广西高考物理考试结束后,有不少考生吐槽:新高考后真的就没有不难的物理,每年创新每年都受伤。高中物理难,似乎成了很多学生和家长的共识。因此,在选考科目中,不少学生都放弃了物理。但是,我们要知道,选择物理意味着在填报志愿时可以选择更多的专业,因为......