【概率论,算法】排列的峰值期望
Surtr1 的珂学难题
题目链接:https://ac.nowcoder.com/acm/contest/107965/E
给定一个长度为 n n n 的排列 p p p,排列中任一位置如果满足以下条件,则称该位置为 峰值:
- 位置 1:若存在元素,满足 p [ 1 ] > p [ 2 ] p[1] > p[2] p[1]>p[2],则 p [ 1 ] p[1] p[1] 为峰值。
- 位置 n:若存在元素, p [ n ] > p [ n − 1 ] p[n] > p[n-1] p[n]>p[n−1],则 p [ n ] p[n] p[n] 为峰值。
- 位置 2 至 n-1:若 p [ i ] > p [ i − 1 ] p[i] > p[i-1] p[i]>p[i−1] 且 p [ i ] > p [ i + 1 ] p[i] > p[i+1] p[i]>p[i+1],则 p [ i ] p[i] p[i] 为峰值。
Surtr1定义一个排列的价值为所有峰值位置的和,具体来说,对于排列 { 1 , 2 , 3 } \{1,2,3\} {1,2,3} 位置3为峰值位置,而位置1和2不是,所以该排列的价值为 3 ,对于排列 { 3 , 1 , 2 } \{ 3,1,2\} {3,1,2},位置1和3为峰值位置,而位置2不是,所以该排列的价值为 1 + 3 = 4 1+3 = 4 1+3=4。
现在有一个长度为 n n n 的随机排列,求该随机排列价值的期望。
但是Surtr1的数学非常差,所以他想将这个问题交给你,你能帮他解决吗?
长度为 n 的排列是由 1 到 n 这 n 个整数,按任意顺序组成的数组,其中每个整数恰好出现一次。例如: { 2 , 3 , 1 , 5 , 4 } \{2, 3, 1, 5, 4\} {2,3,1,5,4} 是一个长度为 5 的排列。
而以下则不是有效的排列: { 1 , 2 , 2 } \{1, 2, 2\} {1,2,2},因为存在重复元素。 { 1 , 3 , 4 } \{1, 3, 4\} {1,3,4},因为包含了超出范围的数。
输入格式
输入一个正整数 n n n ( 2 ≤ n ≤ 10 ) (2 ≤ n ≤ 10) (2≤n≤10) ,代表随机排列的长度。
输出格式
输出一个字符串,表示期望值的不可约分数(形如 A / B A/B A/B)。即使结果为整数,也需要输出成分数形式(例如,1 应输出为 1 / 1 1/1 1/1)。
样例输入与输出
样例 1
输入:
3
输出:
8/3
对于 n = 3 n =3 n=3,有三个位置:
- 位置 1 的峰值概率为 1 / 2 1/2 1/2;
- 位置 2 的峰值概率为 1 / 3 1/3 1/3;
- 位置 3 的峰值概率为 1 / 2 1/2 1/2。
因此,期望值为:
1 ∗ ( 1 / 2 ) + 2 ∗ ( 1 / 3 ) + 3 ∗ ( 1 / 2 ) = ( 1 ∗ 3 + 2 ∗ 2 + 3 ∗ 3 ) / 6 = 16 / 6 = 8 / 3 1*(1/2) + 2*(1/3) + 3*(1/2) = (1*3+2* 2+3 * 3)/6 =16/6=8/3 1∗(1/2)+2∗(1/3)+3∗(1/2)=(1∗3+2∗2+3∗3)/6=16/6=8/3
设每个排列的价值为 V i 设每个排列的价值为V_i 设每个排列的价值为Vi
对于 n = 3 ,有以下 6 种情况: 对于 n=3,有以下6种情况: 对于n=3,有以下6种情况:
{ 1 , 2 , 3 } : 峰值位置为 3 , V 1 = 3 ; \{1,2,3\}: 峰值位置为 3, \quad V_1 = 3; {1,2,3}:峰值位置为3,V1=3;
{ 1 , 3 , 2 } : 峰值位置为 2 , V 2 = 2 ; \{1,3,2\}: 峰值位置为 2,\quad V_2 = 2; {1,3,2}:峰值位置为2,V2=2;
{ 2 , 1 , 3 } : 峰值位置为 1 和 3 , V 3 = 1 + 3 = 4 ; \{2,1,3\}: 峰值位置为 1 和 3, \quad V_3 = 1+3 = 4; {2,1,3}:峰值位置为1和3,V3=1+3=4;
{ 2 , 3 , 1 } : 峰值位置为 2 , V 4 = 2 ; \{2,3,1\}: 峰值位置为 2,\quad V_4 = 2; {2,3,1}:峰值位置为2,V4=2;
{ 3 , 1 , 2 } : 峰值位置为 1 和 3 , V 5 = 1 + 3 = 4 ; \{3,1,2\}:峰值位置为 1 和 3,\quad V_5 = 1+3 = 4; {3,1,2}:峰值位置为1和3,V5=1+3=4;
{ 3 , 2 , 1 } : 峰值位置为 1 , V 6 = 1. \{3,2,1\}: 峰值位置为 1,\quad V_6 = 1. {3,2,1}:峰值位置为1,V6=1.
E = 1 6 ∑ i = 1 6 V i = 3 + 2 + 4 + 2 + 4 + 1 6 = 16 6 = 8 3 . E = \frac{1}{6} \sum_{i=1}^{6} V_i = \frac{3+2+4+2+4+1}{6} = \frac{16}{6} = \frac{8}{3}. E=61∑i=16Vi=63+2+4+2+4+1=616=38.
题解:
这道题正解是 O ( 1 ) O(1) O(1) 的,但这里放成了 O ( N ) O(N) O(N)可做
设 X X X为随机排列的价值, E ( X ) E(X) E(X)为随机排列价值的期望,我们发现直接求无从下手,但是根据期望的线性性,我们可以把复杂事件(或复杂随机变量)拆成若干个“子事件”,通过求子事件的期望即可求出 X X X的期望
设 0 − 1 0-1 0−1 随机变量 X i X_i Xi表示第 i i i 个位置是否为峰值( 当 i > = 2 & & i < = n − 1 i>=2\&\&i<=n-1 i>=2&&i<=n−1时)
X i = { 1 , P [ i ] > P [ i − 1 ] && P [ i ] > P [ i + 1 ] , 0 , else . X_i = \begin{cases} 1, & \text{} P[i] > P[i-1] \text{ \&\& } P[i] > P[i+1], \\ 0, & \text{else}. \end{cases} Xi={1,0,P[i]>P[i−1] && P[i]>P[i+1],else.
那么 X = X 1 + ∑ i = 2 n − 1 X i + X n X = X_1+\sum_{i=2}^{n-1} X_i+X_n X=X1+i=2∑n−1Xi+Xn
E [ X ] = E ( X 1 ) + E [ ∑ i = 2 n − 1 X i ] + E ( X n ) = E ( X 1 ) + ∑ i = 2 n − 1 E [ X i ] + E ( X n ) . E[X] = E(X_1)+E\left[\sum_{i=2}^{n-1} X_i \right] + E(X_n) = E(X_1)+\sum_{i=2}^{n-1} E[X_i]+E(X_n). E[X]=E(X1)+E[i=2∑n−1Xi]+E(Xn)=E(X1)+i=2∑n−1E[Xi]+E(Xn).
那么第 i i i个位置的期望 E ( X i ) E(X_i) E(Xi)怎么求呢?很简单,我们只需要考虑 i i i 这个位置 p [ i ] > p [ i − 1 ] p[i] > p[i-1] p[i]>p[i−1] 且 p [ i ] > p [ i + 1 ] p[i] > p[i+1] p[i]>p[i+1] 的概率即可。
在一个 1 − n 1-n 1−n 的排列中,随机选 k k k 个数,求第一个数比其他几个数小的概率
p = ( k − 1 ) ! k ! = 1 k . p = \frac{(k-1)!}{k!} = \frac{1}{k}. p=k!(k−1)!=k1.
那么对应到这题, P ( X i ) = 1 3 P(X_i)= \frac{1}{3} P(Xi)=31,那么 E ( X i ) = i 3 E(X_i)=\frac{i}{3} E(Xi)=3i,特别的 E ( X 1 ) = 1 2 E(X_1)=\frac{1}{2} E(X1)=21, E ( X n ) = n 2 E(X_n)=\frac{n}{2} E(Xn)=2n
结果就是 :
∑ i = 1 n E ( X i ) = E ( X 1 ) + ∑ i = 2 n − 1 i 3 + E ( X n ) = 1 2 + 1 3 ( ∑ i = 2 n − 1 i ) + n 2 = 1 2 + 1 3 ( n ( n − 1 ) 2 − 1 ) + n 2 = 3 ( n + 1 ) 6 + n ( n − 1 ) − 2 6 = 3 n + 3 + n 2 − n − 2 6 = n 2 + 2 n + 1 6 = ( n + 1 ) 2 6 . \begin{aligned} \sum_{i=1}^{n} E(X_i) &= E(X_1) + \sum_{i=2}^{n-1} \frac{i}{3} + E(X_n) \\[1mm] &= \frac{1}{2} + \frac{1}{3}\left(\sum_{i=2}^{n-1} i\right) + \frac{n}{2} \\[1mm] &= \frac{1}{2} + \frac{1}{3}\left(\frac{n(n-1)}{2} - 1\right) + \frac{n}{2} \\[1mm] &= \frac{3(n+1)}{6} + \frac{n(n-1)-2}{6} \\[1mm] &= \frac{3n + 3 + n^2 - n - 2}{6} \\[1mm] &= \frac{n^2 + 2n + 1}{6} \\[1mm] &= \frac{(n+1)^2}{6}\,. \end{aligned} i=1∑nE(Xi)=E(X1)+i=2∑n−13i+E(Xn)=21+31(i=2∑n−1i)+2n=21+31(2n(n−1)−1)+2n=63(n+1)+6n(n−1)−2=63n+3+n2−n−2=6n2+2n+1=6(n+1)2.
最后的结果通分一下即可
代码:
#include<bits/stdc++.h>using namespace std;
typedef long long ll;
ll gcd(ll a,ll b){return b?gcd(b,a%b):a;
}void solve(){ll n;cin>>n;ll zi=0,mu=0;zi = (n+1)*(n+1);mu = 6;//约分ll gd = gcd(zi,mu);zi/=gd,mu/=gd;cout<<zi<<'/'<<mu<<'\n';
}int main(){ios::sync_with_stdio(0),cin.tie(0);int _ = 1;while(_--)solve();
}