1 条题解
-
0
自动搬运
来自洛谷,原作者为

Pursuing_OIer
ExpectedYes, gotYES.搬运于
2025-08-24 23:00:05,当前版本为作者最后更新于2024-07-01 14:11:10,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
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; }
- 1
信息
- ID
- 10463
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 4
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者