bzoj2720: [Violet 5]列队春游(概率期望+组合数学)
Description
Input
Output
Sample Input
Sample Output
HINT
数学题都这么骚的么……怎么推出来的啊……我是真的想不出来……
首先,要算总的视野期望,我们可以把每一个小朋友的视野期望算出来,然后求和
于是考虑如何计算每个小朋友的视野期望,设$L$表示视野长度,视野期望为$ans$,则有$$ans=\sum_{i=1}^n i*P(L=i)$$
然后考虑转化一下,我们原来是枚举视野长度然后考虑概率,那么我们换一个想法,考虑它前面的第$i$个人如果被看到就会对答案有$1$的贡献,那么我们只要考虑前面的第$i$个人会被看到的概率就可以了,可以直接求和$$ans=\sum_{i=1}^n P(L\geq i)$$
考虑概率如何计算。设不小于第$i$个小朋友身高的有$k$个人(不包括他自己),那么$$ans=\sum_{i=1}^n \frac{(n-i+1)A^k_{n-i}}{A^{k+1}_n}$$
上面的式子意思就是,会挡住小朋友的人包括自己随便放总共有$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)\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}$$
然后对每一个高度都带进去做就行了
ps:一开始没想通倒数第二行怎么化出来的……后来发现是自己组合数姿势不够……把求和拆开来然后前面加上一项$C_1^{k+2}$然后用组合数递推公式带进去化一下就好了……
时间复杂度$O(n)$
//minamoto
#include<bits/stdc++.h>
using namespace std;
const int N=;
int h[N],n,sum;double ans;
int main(){
scanf("%d",&n);
for(int i=,x;i<=n;++i)
scanf("%d",&x),++h[x];
for(int i=;i<=;++i) ans+=1.0*h[i]*(n+)/(n-sum+),sum+=h[i];
printf("%.2lf\n",ans);
return ;
}
bzoj2720: [Violet 5]列队春游(概率期望+组合数学)的更多相关文章
- BZOJ2720: [Violet 5]列队春游
2720: [Violet 5]列队春游 Time Limit: 5 Sec Memory Limit: 128 MBSubmit: 173 Solved: 125[Submit][Status] ...
- BZOJ 2720: [Violet 5]列队春游
2720: [Violet 5]列队春游 Time Limit: 5 Sec Memory Limit: 128 MBSubmit: 189 Solved: 133[Submit][Status] ...
- BZOJ 2720 [Violet 5]列队春游 ——期望DP
很喵的一道题(我可不是因为看了YOUSIKI的题解才变成这样的) $ans=\sum_{x<=n}\sum_{i<=n} iP(L=i)$ 其中P(x)表示视线为x的概率. 所以只需要求出 ...
- 【BZOJ-1419】Red is good 概率期望DP
1419: Red is good Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 660 Solved: 257[Submit][Status][Di ...
- uvalive 7331 Hovering Hornet 半平面交+概率期望
题意:一个骰子在一个人正方形内,蜜蜂在任意一个位置可以出现,问看到点数的期望. 思路:半平面交+概率期望 #include<cstdio> #include<cstring> ...
- OI队内测试一【数论概率期望】
版权声明:未经本人允许,擅自转载,一旦发现将严肃处理,情节严重者,将追究法律责任! 序:代码部分待更[因为在家写博客,代码保存在机房] 测试分数:110 本应分数:160 改完分数:200 T1: 题 ...
- CF_229E_Gift_概率DP+组合数学
CF_229E_Gift_概率DP+组合数学 题目描述: 很久很久以前,一位老人和他的妻子住在蔚蓝的海边.有一天,这位老人前去捕鱼,他捉到了一条活着的金鱼.鱼说:“噢,老渔人!我祈求你放我回到海里,这 ...
- 2016 多校联赛7 Balls and Boxes(概率期望)
Mr. Chopsticks is interested in random phenomena, and he conducts an experiment to study randomness. ...
- 牛客网多校赛第9场 E-Music Game【概率期望】【逆元】
链接:https://www.nowcoder.com/acm/contest/147/E 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524 ...
随机推荐
- POJ 1502 水 dij
题意:给N,表示N个节点. 给半个邻接矩阵,本身到本身的距离是0,边是双向的.当两个节点之间没有直接的边连接的时候,用x表示. 问从第一个节点到其他所有节点至少花费的时间. 这题唯一的处理是处理邻接矩 ...
- 如何扩展ArcGIS中的元数据编辑器
http://www.esrichina-bj.cn/old../library/arcnews16/Metadata.htm http://www.esrichina-bj.cn/old../lib ...
- History(历史)命令用法 15 例
如果你经常使用 Linux 命令行,那么使用 history(历史)命令可以有效地提升你的效率.本文将通过实例的方式向你介绍 history 命令的 15 个用法. 使用 HISTTIMEFORMAT ...
- POJ3264Balanced Lineup(最基础的线段树)
採用一维数组建树. (由于一维数组建的是全然二叉树,时间上比用孩子节点指针建树慢.只是基本能够忽略=-=) #include<iostream> #include<cstdio> ...
- woodcut
http://www.lintcode.com/en/problem/wood-cut/# 二分答案,贪心验证,具有单调性 class Solution { public: /** *@param L ...
- hdu1507——Uncle Tom's Inherited Land*
Uncle Tom's Inherited Land* Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (J ...
- 基于开源项目的在线网络视频直播项目---一个很好的电视直播开源项目Sopcast
http://blog.csdn.net/roy_xu/article/details/2216559 http://115.com/?ct=rar&pickcode=ew52634xr2cr ...
- 【iOS系列】-textView的非常规使用
[iOS系列]-textView的非常规使用 文本框坐标设置一点距离 //文本框,左边间距 textView.leftView = [[UIView alloc] initWithFrame:CGRe ...
- STL_算法_元素计数(count、count_if)
C++ Primer 学习中.. . 简单记录下我的学习过程 (代码为主) count . count_if #include<iostream> #include<cstdio&g ...
- 扩展HtmlHelper
eg3:扩展HtmlHelper 扩展方法类 1 public static class HtmlExtension 2 { 3 /// ...