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();
}
1737

被折叠的 条评论
为什么被折叠?



