【BZOJ5146】有趣的概率 概率+组合数(微积分)
【BZOJ5146】有趣的概率
Description
Input
Output
Sample Input
Sample Output
题解:思路比较简单,过程比较复杂的数学题。首先本题有两种统计方法,一种的点是无标号的,另一种的点是有标号的,显然二者答案相等,但是无标号的比有标号的恶心多了。。。不过由于本人比较sb采用了无标号的方法,所以这里先讲我的做法:
至少有一个锐角等价于存在一个点,他左右两个点之间夹的圆弧大于一个半圆。所以我们不妨设圆是由$S$个点组成的($S\rightarrow \infty$),那么我们先钦定一个角做锐角,再固定它左边的点不动,然后枚举剩下的那段圆弧的长度,便能得到某个角是锐角的概率:
$p_1={\sum\limits_{i=1}^{\frac S 2}(S-i)C_i^{n-3} \over C_S^{n-1}}$ ----(1)
运用一点组合知识,便能将这个式子化简到这个形式:$p_1={n\over 2^{n-1}}$。(如果你组合学得不好,本文最后会给出推导过程。)
有n个点,所以概率再乘上n,但是我们好像忽视了一个情况:圆内一个凸多边形可能有两个锐角!
所以我们把这个重复的部分去掉即可,由于两个锐角一定是相邻的,所以我们可以钦定某两个点是锐角,某对相邻的角全是锐角的概率是:
$p_2={\sum\limits_{i=1}^{\frac S 2}(\frac S 2-i)C_i^{n-2} \over C_S^{n-1}}$ ----(2)
推导过程类似,最后得到:$p_2=\frac 1 {2^{n-2}}$
所以最终答案就是:$(p_1-p_2)n=\frac {n(n-2)} {2^{n-1}}$。
如果用有标号的方法的话(Orz xqz),用微积分可以很快的解决问题(其实本质思想差不多),这里不给出式子了(其实是没学过)。
代码就不贴了。。。
附推导过程↓↓↓
先声明,在后面的式子中,某些变量趋近于无穷,因此我会舍弃它们后面的常数项。具体过程如下:
首先解释(1),(2)式的含义。(1)式中,我们先固定了一个点A,然后选择了A在顺时针方向的后两个点B,C,接着枚举了剩下那段圆弧的长度i,其中B对应的角是锐角,i可以看作弧AC的长度。那么,B的位置可以在剩余S-i个点中任取,其余n-3个点可以在i个点中任取,所以就是$(S-i)C_i^{n-3}$。最后总方案数可以看成固定一个点,其余的点在S中任取,就是$C_S^{n-1}$。

我们将分子的(S-i)拆开处理,然后将S提出来。首先有$\sum\limits_{i=1}^m C_i^n=C_m^{n+1}$,因为这可以看成在m个物品中选n个,你枚举编号最大的那个物品的编号得到的结果。于是前一部分就变成$S\times C_{S\over 2}^{n-2}$。又因为$iC_i^n=(i+1)C_i^n=(n+1)C_i^{n+1}$,所以我们又可以套用前面的式子,那么后一部分就变成了$(n-2)\times C_{S\over 2}^{n-1}$。
继续化简:${S\cdot C_{S\over 2}^{n-2}-(n-2)C_{S\over 2}^{n-1}\over C_S^{n-1}}\\={{2\cdot {S\over 2}({S\over 2})!\over (n-2)!({S\over 2}-(n-2))!}-{(n-2)({S\over 2})!\over (n-1)!({S\over 2}-(n-1))!}\over{S!\over (n-1)!(S-(n-1))!}}\\={{2(n-1)({S\over 2})!\over (n-1)!({S\over 2}-(n-1))!}-{(n-2)({S\over 2})!\over (n-1)!({S\over 2}-(n-1))!}\over{S!\over (n-1)!(S-(n-1))!}}\\={n({S\over 2}!)(S-(n-1))!\over S!({S\over 2}-(n-1))!}\\={n\over 2^{n-1}}$
(2)式中,我们先固定了固定了一个点a,然后选择它在顺时针方向的下一个点b,要求a顺时针到b的这条圆弧大于一个半圆,接着枚举b到a这段劣弧的长度i,那么b可以在${S\over 2}-i$个点里选,剩余的点可以在i个点里选,这样就能保证角a和角b都是锐角了。方案数是$({S\over 2}-i)C_i^{n-2}$。推导过程略。

【BZOJ5146】有趣的概率 概率+组合数(微积分)的更多相关文章
- HDU 5001 概率DP || 记忆化搜索
2014 ACM/ICPC Asia Regional Anshan Online 给N个点,M条边组成的图,每一步能够从一个点走到相邻任一点,概率同样,问D步后没走到过每一个点的概率 概率DP 測 ...
- Hello 2019 D 素因子贡献法计算期望 + 概率dp + 滚动数组
https://codeforces.com/contest/1097/problem/D 题意 给你一个n和k,问n经过k次操作之后留下的n的期望,每次操作n随机变成一个n的因数 题解 概率dp计算 ...
- [CSP-S模拟测试]:糊涂图(概率DP)
题目传送门(内部题76) 输入格式 第一行输入三个空格隔开的整数$n,m,s$表示随机加一条边之前的糊涂图的点数,边数,以及起点的编号. 接下来$m$行,每行两个空格隔开的整数$a,b$表示从$a$到 ...
- 线性推概率——cf1009E好题!
依次求每一段公里的期望消耗即可,这是可以递推的 dp[i]表示每公里的期望消耗 dp[i]=1/2*a1+1/4*a2 +...+1/2^(i-1)*ai-1 + 1/2^(i-1)*ai注意最后一项 ...
- 《x的奇幻之旅》:有趣的数学科普
本书是相对比较少见的数学方面的科普书.从最简单的阿拉伯数字.加减法,一直到概率统计.微积分.群论.拓扑.微分几何,每个主题都用几千字做一些深入浅出的介绍.写的相当的有趣. 在书中又一次看到这个有趣的事 ...
- Codeforces Gym10081 A.Arcade Game-康托展开、全排列、组合数变成递推的思想
最近做到好多概率,组合数,全排列的题目,本咸鱼不会啊,我概率论都挂科了... 这个题学到了一个康托展开,有点用,瞎写一下... 康托展开: 适用对象:没有重复元素的全排列. 把一个整数X展开成如下形式 ...
- CodeForces 352D. Jeff and Furik
题意:给n个数,第一个人选取相邻两个递降的数交换顺序,第二个人一半的概率选取相邻两个递降的数交换顺序,一半的概率选取相邻两个递增的数交换顺序.两个人轮流操作,求整个数列变成递增数列所需交换次数的期望. ...
- 互联网,IT,大数据,机器学习,AI知识tag云
互联网基础: tcp/ip网络,linux运维,DNS,ipv6 web前端: javascript, es6, 组件化开发, vuejs, angularjs, react html5, css3, ...
- Bzoj2038 小Z的袜子(hose)
Time Limit: 20000MS Memory Limit: 265216KB 64bit IO Format: %lld & %llu Description 作为一个生活散漫 ...
随机推荐
- 安装配置和使用HBASE Cluster(基于发行版CDH5.0.2)——系列随笔
本系列文章只是记录了笔者本人在学习实验安装和使用基于CDH5.0.2的HBASE集群过程中的一些经验教训和心得,绝不是详细的安装过程,因本人不过一初学者,很多方面不甚了了,如果能让不幸读到的人有所得则 ...
- cp -rf 提示覆盖解决办法
cp覆盖时,无论加什么参数-f之类的还是提示是否覆盖,当文件比较少的时候还可以按Y确认,当很多文件的时候就不好说了 方法一:vi ~/.bashrc # .bashrc # User specific ...
- Android 内存
memory usage of this progress under 15MB for 1GB RAM device Android内存机制分析下篇:分析APP内存使用情况http://mobile ...
- Blender 移动、旋转、缩放
1.手动调整物体的属性 当我们添加了一个物体后,例如一个Torus物体. 在左侧下角部分能看到“Add Torus”面板,面板包含了Locatin.Rotation.Major Segments.Mi ...
- 使用pyinotify实现加强版的linux tail -f 命令,并且对日志类型的文本进行单独优化着色显示。
tail -f命令不能自动切换切片文件,例如日志是每100M生成一个新文件,tail -f不能自动的切换文件,必须关闭然后重新运行tail -f 此篇使用pyinotify,检测文件更新,并实现tai ...
- GDAL------加载Shapefile文件
代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using Syst ...
- SpringMVC -- 梗概--源码--贰--RestFul收参(了解) @PathVariable
1>定制方式: //如下两个路径都可以访问到如下方法,请求路径不同,则name61和pwd61匹配到的值不同 //http://localhost:8989/appname/ful/lime/1 ...
- flexbox父盒子justify-content属性
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 【安全开发】Perl安全编码规范
多年以来,Perl已经成为用于系统管理和WebCGI开发的功能最强的编程语言之一(几乎可以使用Perl做任何功能的程序).但其扩展应用,即作为Internet上CGI的开发工具,使得它经常成为Web服 ...
- linux 查看硬件信息
1.查看内存槽数.那个槽位插了内存,大小是多少 dmidecode|grep -P -A5 "Memory\s+Device"|grep Size|grep -v Range ...