嘘~ 正在从服务器偷取页面 . . .

CF453A Little Pony and Expected Maximum 题解


CF453A Little Pony and Expected Maximum 题解

题目链接:Little Pony and Expected Maximum

题意

暮暮刚刚在和她的朋友——AJ(苹果杰克)、FS(小蝶)、RD(云宝黛西)玩Ludo游戏。但是她马品没攒够总是输。回到城堡过后,她对游戏用的骰子产生了兴趣。

这个骰子有 $m$ 面:骰子的第一面有一个点,第二面有两个点,以此类推,第 $m$ 面含有 $m$ 点。暮暮确信的是,当掷骰子时,每一面都有 $\frac{1}{m}$ 的可能性出现,并且每次投掷的概率都是都是独立的。请你帮助她计算掷N次骰子后每次得到的点数中最大值的期望。

输入格式

一行两个整数 $m$ 和 $n (1 \le m, n \le 10^5)$ 。

输出格式

输出一行一个实数,与答案误差不大于$10^{-4}$

扔 $n$ 次,最大值是 $k$ 的方案数有 $k^n - (k-1)^n$ 种,每种方案对答案的贡献是 $k$ 。

因此

时间复杂度 $\mathcal{O}(m)$

代码:

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define INF 0x3f3f3f3f3f3f3f3f
void up(int &x,int y) { x < y ? x = y : 0; }
void down(int &x,int y) { x > y ? x = y : 0; }
#define N ((int)())

int n, m; double res;
signed main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    // freopen("check.in","r",stdin);
    // freopen("check.out","w",stdout);
    cin >> m >> n;
    for(double i = 1; i <= m; i++)
        res += i * (pow(i / m, n) - pow((i - 1) / m, n));
    cout << fixed << setprecision(12) << res << '\n';
    return 0;
}

参考文献

[1] https://www.luogu.com.cn/article/sz4meblt


文章作者: q779
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-ND 4.0 许可协议。转载请注明来源 q779 !
评论
  目录