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, 则这些情况是新增 ...
随机推荐
- jsp标签${fn:contains()}遇到问题记录
在jsp页面要实现这样一个功能,列表的某一列字段要显示的数据,是从后台的一个列表中获取的,数据库里面该列存储的方式是 类似 1,2,3 这样的 主键id数据.显示的时候要根据id显示名称,如果是多个 ...
- Visual Studio Code工具使用及配置
最近迷上了这个工具,启动速度快,好多插件.唯一不满意的地方就是svn版本控制工具.下面发现我装的一些插件及配置: 我安装的一些插件: 上面是我装的插件,等有时间再解释下插件的作用. 接下来说下配置: ...
- Tomcat:Commons Daemon procrun stdout initialized
1.问题查询 更换了Tomcat版本后服务器无法启动,看日志出现了Commons Daemon procrun stdout initialized错误,一开始以为是环境变量的配置问题,但是仔细检查后 ...
- SACD-ISO音频镜像播放方式
SACD-ISO 音频文件不需要解压也不需要挂载光盘,可以直拖入播放器播放. 播放器下载 foobar2000https://www.foobar2000.org/download 解码插件下载 Su ...
- IntelliJ IDEA 删除自定义的 Maven 框架依赖
IntelliJ IDEA 删除自定义的 Maven 框架依赖 IntelliJ Idea中添加Maven Archetype,但是IntelliJ Idea中并没有提供删除的方法. windows中 ...
- Python学习之路:列表(List)的append()、extend()与insert()方法
相同点 这三种方法的作用都是为列表(List)添加值 它们的语法为: list.append(obj)list.extend(seq)list.insert(index,obj) #此处index为对 ...
- Python之路【第二十九篇】:django ORM模型层
ORM简介 MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员的 ...
- 【实战经验】--Xilinx--IPcore--MCB(DDR3)运用
1.背景与介绍 1)在导师安排的新的任务中,用到了一块2G大小的DDR3(MT41K128M16JT-107).本打算像之前用SDRAM一样自己写初始化,读写模块,但是师兄跟我说可以用Xilinx自带 ...
- PB 选择继承父类的注意事项
1.父类的datewindow 的祖先类最好不是n_dw_single ,最好是n_dw_grid,n_dw_single 的标题行没有阴影.排序,没有行聚焦等功能(非常初始的).n_dw_grid ...
- RabbitMQ之消息模式
目的: 消息如何保证100%的投递 幂等性概念 Confirm确认消息 Return返回消息 自定义消费者 前言: 想必知道消息中间件RabbitMQ的小伙伴,对于引入中间件的好处可以起到抗高并发,削 ...