排列最小值 [期望]

排列最小值


\color{red}{正解部分}

首先排列中第 ii 个元素作为前 ii 个元素的最小值的概率为 1i\frac{1}{i},

f[i]f[i] 表示排列第 ii 个元素是否为前 ii 个元素的最小值, 值为 0/10/1,
根据题目要求, 期望为 ans=(i=1nf[i])2=i=1nj=1nf[i]f[j]ans = \left( \sum\limits_{i=1}^n f[i] \right)^2 = \sum\limits_{i=1}^n \sum\limits_{j=1}^n f[i]f[j],

i=ji = j 时, f[i]f[j]=1f[i]f[j] = 1 的概率为 1i\frac{1}{i}, 在上式对期望的贡献为 i=1n1i\sum\limits_{i=1}^n \frac{1}{i} .
i !=ji\ != j 时, f[i]f[j]=1f[i]f[j] = 1 的概率为 1i×1j\frac{1}{i} \times \frac{1}{j},
在上式对期望的贡献为 i=1n1i((j=1n1j)1i)=(i=1n1i)2i=1n1i2\sum\limits_{i=1}^n \frac{1}{i}\left( (\sum\limits_{j=1}^n \frac{1}{j}) - \frac{1}{i}\right) = \left(\sum\limits_{i=1}^n\frac{1}{i}\right)^2 - \sum\limits_{i=1}^n \frac{1}{i^2} .

所以 ansans 的期望为 i=1n1i+(i=1n1i)2i=1n1i2\sum\limits_{i=1}^n \frac{1}{i}+\left(\sum\limits_{i=1}^n\frac{1}{i}\right)^2 - \sum\limits_{i=1}^n \frac{1}{i^2},

然后使用 ansans 乘上 n!n! 即为题目中的答案 .


\color{red}{实现部分}

#include<bits/stdc++.h>
#define reg register

int read(){
        char c;
        int s = 0, flag = 1;
        while((c=getchar()) && !isdigit(c))
                if(c == '-'){ flag = -1, c = getchar(); break ; }
        while(isdigit(c)) s = s*10 + c-'0', c = getchar();
        return s * flag;
}

const int maxn = 1e5 + 10;
const int mod = 998244353;

int N;
int Q_;
int inv[maxn];
int fac[maxn];
int sum_1[maxn];
int sum_2[maxn];

void Work(){
        N = read();
        int Ans = (sum_1[N] - sum_2[N] + mod) % mod;
        Ans = (1ll*Ans + (1ll*sum_1[N]*sum_1[N]%mod)) % mod;
        Ans = 1ll*Ans*fac[N] % mod;
        printf("%d\n", Ans);
}

int main(){
        Q_ = read();
        fac[0] = 1; for(reg int i = 1; i < maxn; i ++) fac[i] = 1ll*fac[i-1]*i % mod;
        inv[1] = 1; for(reg int i = 2; i < maxn; i ++) inv[i] = ((-1ll*mod/i*inv[mod%i])%mod + mod) % mod;
        for(reg int i = 1; i < maxn; i ++){
                sum_1[i] = (sum_1[i-1] + inv[i]) % mod;
                sum_2[i] = (sum_2[i-1] + (1ll*inv[i]*inv[i]%mod)) % mod;
        }
        while(Q_ --) Work();
        return 0;
}
posted @ 2019-09-28 15:07  XXX_Zbr  阅读(243)  评论(0编辑  收藏  举报