首页 > 其他分享 >[BZOJ2720 Violet 5]列队春游(概率期望+组合数学)

[BZOJ2720 Violet 5]列队春游(概率期望+组合数学)

时间:2024-05-29 11:37:05浏览次数:12  
标签:BZOJ2720 frac sum Violet 春游 ans 小朋友 视野 define

列队春游

问题描述

输入格式:

输出格式:

样例输入:

3
1 2 3

样例输出:

4.33

提示

思路

根据期望的线性性质,我们可以枚举每种可能的视野,然后求和

对于每种视野,其期望为该种视野的视野长度 * 该种视野的概率

设某个小朋友的视野期望为 \(ans\) ,她的视野长度为 \(L\)

由于前面的第 \(i\) 个人如果被看到就会对答案有 \(1\) 的贡献,那么我们只要考虑前面的第 \(i\) 个人会被看到的概率就可以了,可以直接求和

\[ans = \sum_{i=1}^{n}i \times P(L \geq i) \]

设不小于第\(i\)个小朋友身高的有\(k\)个人(不包括他自己)

那么会挡住小朋友的人包括自己随便放总共有 \(A^{k+1}_n\) 种情况,其中那些会挡住小朋友的人不能放在小朋友前面的 \(i - 1\) 个位置,也不能放在小朋友的位置,所以方案数为 \(A^k_{n-i}\) ,然后又因为小朋友自己有 \(n-i+1\) 个位置可以放,所以乘上一个 \(n-i+1\)

所以最终

\[ans = \sum_{i=1}^{n} \frac{(n-i+1)A_{n-i}^{k}}{A_{n}^{k+1}} \]

然后就是 愉快的 导管子 导式子时光了

\[ans = \sum_{i=1}^{n}\frac{(n-i+1) \frac{(n-i)!}{(n-i-k)!}}{\frac{n!}{(n-k-1)!}} \]

\[ans = \frac{(n-k-1)!}{n!} \sum_{i=1}^{n}\frac{(n-i+1)!}{(n-i-k)!} \]

\[ans = \frac{(n-k-1)!}{n!}(k+1)! \sum_{i=1}^{n}\frac{(n-i+1)!}{(n-i-k)!(k+1)!} \]

\[ans = \frac{(n-k-1)!}{n!}(k+1)! \sum_{i=1}^{n}C_{n-i+1}^{k+1} \]

\[ans = \frac{(n-k-1)!}{n!}(k+1)! C_{n+1}^{k+2} \]

\[ans = \frac{n+1}{k+2} \]

很多题解都没有解释倒数第二个式子是怎么导出来的(可能只有我这个蒟蒻看不懂吧 大悲
简单解释一下:
先将 $ \sum $ 展开一下,得到

\[ans = \frac{(n-k-1)!}{n!}(k+1)! (C_{n-1+1}^{k+1}+C_{n-2+1}^{k+1}+...+C_{2}^{k+1}+C_{1}^{k+1}) \]

在式子最后加上一个 \(C_{1}^{k+2}\) (由定义可知\(C_{1}^{k+2}=0\)),得

\[ans = \frac{(n-k-1)!}{n!}(k+1)! (C_{n-1+1}^{k+1}+C_{n-2+1}^{k+1}+...+C_{2}^{k+1}+C_{1}^{k+1}+C_{1}^{k+2}) \]

由组合数递推式子 \(C_{n}^{m} = C_{n - 1}^{m - 1} + C_{n - 1}^{m}\) 将最后两项合并可得

\[ans = \frac{(n-k-1)!}{n!}(k+1)! (C_{n-1+1}^{k+1}+C_{n-2+1}^{k+1}+...+C_{2}^{k+1}+C_{2}^{k+2}) \]

反复合并,最终得到

\[ans = \frac{(n-k-1)!}{n!}(k+1)! C_{n+1}^{k+2} \]

code

Elaina's code
#include<bits/stdc++.h>
using namespace std;
const double eps=1e-8;
const int N=5050;
#define int long long
#define inf 0x3f
#define INF 0x3f3f3f3f
#define mst(a,b) memset(a,b,sizeof(a))
#define re register
#define Elaina 0
#define lson (rt<<1)
#define rson (rt<<1|1)
inline int read(){
    int x=0,f=1;
    char ch=getchar();
    for(;!isdigit(ch);ch=getchar()) if(ch=='-') f=-1;
    for(;isdigit(ch);ch=getchar()) x=x*10+ch-'0';
    return x*f;
}

int n,a[N];
double h[N],ans=0,sum=0;

main(){
	n=read();
	for(int i=1;i<=n;i++){
		a[i]=read();
		h[a[i]]++;
	}
	
	for(int i=1;i<=1000;i++){
		ans+=1.0*h[i]*(n+1)/(n-sum+1);
		sum+=h[i];
	}
	printf("%.2lf",ans);
    return Elaina;
}

都看到这了,真的不点个赞吗(>ω<*)

标签:BZOJ2720,frac,sum,Violet,春游,ans,小朋友,视野,define
From: https://www.cnblogs.com/Elaina-0/p/18219838

相关文章

  • 列队春游
    $\quad$实在蒟蒻,不看题解就只能对着电脑发呆,想了一个脚指头都能想出来的\(O(n\timesn!)\)的暴力做法。$\quad$也是看了好多题解才大概明白式子推法。$\quad$先考虑枚举每个可能的视野长度,那么就会有;\begin{aligned}ans&=\sum_{i=1}^{n}{i\timesP(i)}\\&=\sum_{......
  • [博客迁移20190713]题解 P4169 【[Violet]天使玩偶/SJY摆棋子】
    《算法竞赛》书上例题(可惜原书没代码)天使玩偶,一道好题。(书p243)我就来谈谈自己的想法吧!而总有人在这种明明可以离线处理的三维偏序问题上投机取巧。如:KDtree。蒟蒻想说,KDtree在这题复杂度是不对的。虽有剪枝,可是还是有可能遍历整棵树的(期望复杂度不靠谱)对上述看法有争议的,请跳......
  • 086、和晋陵陆丞早春游望
    086、和晋陵陆丞早春游望唐●杜审言独有宦游人,偏惊物候新。云霞出海曙,梅柳渡江春。淑气催黄鸟,晴光转绿......
  • 鲜花 #2 2024 年春游吐槽
    说是春游,还不如说是夏游。去的安的童话森林公园,说是童话,实际上就是种菜的。饭难吃的要死,而且工作人员的态度相当恶劣。说是下河摸鱼,实际上就是在浑水里面乱撞,而且水深的要死,根本看不到有鱼,说是放了\(300\)条鱼,实际上就没几条。水底除了泥巴就是石头,一会鞋陷进去了,一会就是磕......
  • P4168 [Violet] 蒲公英 (莫队的强制在线)
    前言当个乐子看就行所用时间不如分块正解快虽然在线莫队实质也是分块[Violet]蒲公英题目背景亲爱的哥哥:你在那个城市里面过得好吗?我在家里面最近很开心呢。昨天晚上奶奶给我讲了那个叫「绝望」的大坏蛋的故事的说!它把人们的房子和田地搞坏,还有好多小朋友也被它杀掉了。我......
  • P4168 [Violet] 蒲公英(题解)
    题目题目描述输入格式输出格式数据范围![]样例输入:63123212153615输出:121思路暴力本题求区间内的最小众数,容易想到去用数组sum[i]表示第i种花的个数,在去便利比较,但是复杂度nm一定会T,这时候就要对暴力进行优化。分块优化1如果我们将所......
  • 缩小数据范围——nc2.4多校_A.新春游戏之数学系列
    目录问题概述思路分析参考代码做题反思问题概述原题参考A.新春游戏之数学系列大致就是给出一个数组,要求求出一个公式的值,有几个数据范围值得注意一下,一是数组的长度为[0,1e6],二是数组元素的和不超过5e7思路分析赛时第一眼准备去分析公式看看有没有可以优化的,用前缀拆分优化......
  • Ybt 金牌导航 6.3.A. 区间众数 / P4168 [Violet] 蒲公英(分块)
    题意简述多次查询区间\([l,r]\)的众数,若有多个取数值最小的。强制在线。\(n\le4\times10^4,m\le5\times10^4\)。分析考虑分块。首先预处理出块区间内的众数\(maj_{l,r}\)和每种数在某个块的前缀的出现次数\(cnt_{i,a_i}\),时空复杂度都是\(O(n\sqrtn)\)的。对于询......
  • Luogu P4168 [Violet] 蒲公英 题解
    题目链接[Violet]蒲公英分析可以先将\(a[i]\)离散化然后考虑分块对于询问\(x,y\),\(x\)属于\(p\),\(y\)属于\(q\)当\(q-p<=1\)时直接暴力枚举即可,时间复杂度为\(O(\sqrt{n})\)\(else\)如图中间为分好块的地方我们发现,\(ans\)只可能为中间的众数或两边的......
  • [Violet5]樱花
    [Violet5]樱花题解题意概括:题目意思很明白,输入一个\(int\)类型整数\(n\)(\(1<=n<=10^6\))求方程\(\frac{1}{x}+\frac{1}{y}=\frac{1}{n!}\)(\(n!\)表示\(n\)的阶乘,即\(n!=1\times2\times3\times······\timesn\))解的个数题目分析:肯定是一个数论题(废话),题......