题解:P10668 BZOJ2720 [Violet 5] 列队春游
Pursuing_OIer · · 题解
BZOJ2720 [Violet 5] 列队春游 题解
Problem
对于一个数列
Solution
我们考虑对于每一种身高的学生,分别统计期望。显然,对于身高为
设对于当前的
另外,每个人不论如何都有
实现时,可以记录每种身高学生的个数并依次累加贡献,时间复杂度为基于身高值域的线性复杂度。
Code
#include<bits/stdc++.h>
using namespace std;
int n,a,b[2000],sum,maxn;
double ans;
int main(){
scanf("%d",&n);
for(int i=1;i<=n;++i){
scanf("%d",&a);
++b[a];
maxn=max(maxn,a);
}
for(int i=1;i<=maxn;++i){
ans+=1.0*sum*b[i]/(n-sum+1)+b[i];
sum+=b[i];
}
printf("%.2lf",ans);
return 0;
}