E. Little Pony and Expected Maximum(组合期望)
题目描述:
Little Pony and Expected Maximum
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output
Twilight Sparkle was playing Ludo with her friends Rainbow Dash, Apple Jack and Flutter Shy. But she kept losing. Having returned to the castle, Twilight Sparkle became interested in the dice that were used in the game.
The dice has m faces: the first face of the dice contains a dot, the second one contains two dots, and so on, the m-th face contains m dots. Twilight Sparkle is sure that when the dice is tossed, each face appears with probability
. Also she knows that each toss is independent from others. Help her to calculate the expected maximum number of dots she could get after tossing the dice n times.
Input
A single line contains two integers m and n (1 ≤ m, n ≤ 105).
Output
Output a single real number corresponding to the expected maximum. The answer will be considered correct if its relative or absolute error doesn't exceed 10 - 4.
Examples
Input
Copy
6 1
Output
Copy
3.500000000000
Input
Copy
6 3
Output
Copy
4.958333333333
Input
Copy
2 2
Output
Copy
1.750000000000
Note
Consider the third test example. If you've made two tosses:
- You can get 1 in the first toss, and 2 in the second. Maximum equals to 2.
- You can get 1 in the first toss, and 1 in the second. Maximum equals to 1.
- You can get 2 in the first toss, and 1 in the second. Maximum equals to 2.
- You can get 2 in the first toss, and 2 in the second. Maximum equals to 2.
The probability of each outcome is 0.25, that is expectation equals to:

You can read about expectation using the following link: http://en.wikipedia.org/wiki/Expected_value
思路:
刚开始沙雕了。把题目中的几次投掷的最大值看成了总和,也就是投掷几次的得到的总面值,开始枚举排列,找规律,就在感觉有点眉目时,发现不对,题目好像不是这个,(⊙o⊙)…
题目的意思是投掷一枚m面的色子n次,每次投掷的面值有个最大值,求所有可能的投掷的最大期望。
开始的思路:
最大为一,一种情况,
最大为2,可以选择,有一次投了2,剩下投了少于2,两次投了2,剩下少于2,...,n次全投2
最大为3,等等等等
最后公式是:\(\sum_{i=1}^{m}\sum_{j=1}^{n}i*C_n^j(i-1)^{n-j}\),其中i是投掷的最大面值,j是投掷中几次投到最大值。
一看,这个公式,怎么化简啊?一看不知道,再看吓一跳:
\(\sum_{j=1}^{n}C_n^j(i-1)^{n-j}=C_n^1(i-1)^{n-1}+C_n^2(i-1)^{n-2}+...+C_n^n(i-1)^0\)是不是有点像二项式的展开式啊。
是什么的展开呢?
很显然其中一项是\((i-1)\),还有一项是1,所以想到了\((i-1)^n\),但不对啊,\((i-1)^n=C_n^0i^n(-1)^n+C_n^1i^1(-1)^{n-1}+...+C_n^ni^n\)。诶。。。推不走了,要是直接套用公式复杂度直接\(O(n^2)\),m和n都是\(10^5\)量级的,一秒根本不够。
只有另找公式了。
换个思路:既然是每次最大面值为i,那我投n次不超过i的数目是\(i^n\),每次投不超过i-1的数目是\((i-1)^n\),两者相减得到什么?就是最大为i的数目!还是必有为面值是i的情况,因为已经减了最大是i-1即以下的所有可能了。这样\(O(n)\)内可以算出结果。这里注意的是用pow函数因为参数是相邻的,可以把一个参数存起来供下一次迭代使用,从而减少计算量。还为了不让溢出,最后要总和除以\(m^n\),变成每次除以\(m^n\)再求和。
即\(\frac{pow(i,n)-pow(i-1,n)}{m^n}=\frac{pow(i/m,n)-pow((i-1)/m,n)}{1}\)。
对了顺带还证明了:\(\sum_{i=1}^{m}\sum_{j=1}^{n}i*C_n^j(i-1)^{n-j}=\sum_{i=1}^{m}i*(i^n-(i-1)^n)\)。
代码:
#include <iomanip>
using namespace std;
double n,m;
double ans = 0;
int main()
{
cin >> m >> n;
double tmp = 0;
double last = 0;
for(int i = 1;i<=m;i++)
{
tmp = pow(i/m,n);
ans += (tmp-last)*i;
last = tmp;
}
cout.setf(ios_base::fixed,ios_base::fixed);
cout << setprecision(12) << ans << endl;
return 0;
}
E. Little Pony and Expected Maximum(组合期望)的更多相关文章
- 【CF 453A】 A. Little Pony and Expected Maximum(期望、快速幂)
A. Little Pony and Expected Maximum time limit per test 1 second memory limit per test 256 megabytes ...
- Codeforces Round #259 (Div. 2) C - Little Pony and Expected Maximum (数学期望)
题目链接 题意 : 一个m面的骰子,掷n次,问得到最大值的期望. 思路 : 数学期望,离散时的公式是E(X) = X1*p(X1) + X2*p(X2) + …… + Xn*p(Xn) p(xi)的是 ...
- CF453A Little Pony and Expected Maximum 期望dp
LINK:Little Pony and Expected Maximum 容易设出状态f[i][j]表示前i次最大值为j的概率. 转移很显然 不过复杂度很高. 考虑优化.考虑直接求出最大值为j的概率 ...
- Codeforces Round #259 (Div. 1) A. Little Pony and Expected Maximum 数学公式结论找规律水题
A. Little Pony and Expected Maximum Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.c ...
- 嘴巴题9 Codeforces 453A. Little Pony and Expected Maximum
A. Little Pony and Expected Maximum time limit per test 1 second memory limit per test 256 megabytes ...
- CodeForces 454C Little Pony and Expected Maximum
Little Pony and Expected Maximum Time Limit:1000MS Memory Limit:262144KB 64bit IO Format:%I6 ...
- A. Little Pony and Expected Maximum
Twilight Sparkle was playing Ludo with her friends Rainbow Dash, Apple Jack and Flutter Shy. But she ...
- CodeForces - 453A Little Pony and Expected Maximum
http://codeforces.com/problemset/problem/453/A 题目大意: 给定一个m面的筛子,求掷n次后,得到的最大的点数的期望 题解 设f[i]表示掷出 <= ...
- Codeforces Round #259 (Div. 2) C - Little Pony and Expected Maximum
题目链接 题意:一个m个面的骰子,抛掷n次,求这n次里最大值的期望是多少.(看样例就知道) 分析: m个面抛n次的总的情况是m^n, 开始m==1时,只有一种 现在增加m = 2, 则这些情况是新增 ...
随机推荐
- CentOS / RHEL 内核升级
1. 查看当前内核版本 [root@192.168.118.11 ~]#cat /etc/redhat-release CentOS Linux release 7.7.1908 (Core) [ro ...
- 多分类评测标准(micro 和 macro)
- Oracle Spatial分区应用研究之六:全局空间索引下按县分区与按省分区效率差异原因分析
1.实验结论 全局空间索引下,不同分区粒度之所有效率会有不同,差异并不在于SDO_FILTER操作本身,而在于对于数据字典表的访问次数上: 分区越多.表上的lob column越多,对数据字典表的访问 ...
- HTML5自定义select标签样式的方法
HTML5自定义select标签样式的方法 -webkit-appearance: none; 这个东西可以隐藏箭头 不过手机端就直接 设置透明度为0就行了(如果这种做法比前面个要麻烦点 毕竟还要对他 ...
- [转帖]两大容器管理平台,Kubernetes与OpenShift有什么区别?
两大容器管理平台,Kubernetes与OpenShift有什么区别? https://www.sohu.com/a/327413642_100159565 原来openshift 就是 k8s的一个 ...
- Appium移动端测试--基础预热
目录 Android自动化环境准备 需要安装的软件: Appium多端架构与自动化 Android自动化前提依赖: 获取App的信息: Android常用命令 adb shell 常用命令列表: An ...
- matplotlib 中文乱码问题
matplotlib是Python著名的绘图库,默认并不支持中文显示,因此在不经过修改的情况下,无法正确显示中文. 本文将介绍解决这一问题的方法. 不修改文件,加两行代码即可: matplotlib. ...
- -Gradle 翻译 Merge AndroidManifest 合并清单文件 MD
目录 目录 Merge AndroidManifest 合并清单文件 合并多个清单文件 合并优先级 合并冲突启发式算法 合并规则的标记 节点标记 属性标记 Attribute markers 标记选择 ...
- java之spring之scope和autowiring
目录结构如下: UserDao.java package cn.sxt.dao; public interface UserDao { public void add(); } UserDaoImpl ...
- c# sharepoint client object model 客户端如何创建中英文站点
c# sharepoint client object model 客户端如何创建中英文站点 ClientContext ClientValidate = tools.GetContext(Onlin ...