D - Deceptive Dice 概率题

骰子,老东西,新花样
期望最高
n个面,k次重新投,每次投完都是知道结果的,问期望

题解:
投一次的期望:p = (1 + 2 + 3 + … n ) / n
假设重投一次的话:
则是因为第一次投的不满意(投的值小于期望)
然后重新投。
不满意:第一次的值 <= p 概率: floor§ / n 期望: 概率 * p
再加上> p 期望: (n-floor§) / n 乘 (p + 1) + (p + 2) + … + n)

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<char, int > PII;
const int mod = 1e9 + 7;
const int INF = 0x3f3f3f3f;
const int N = 1e6 + 50;

// 概率NB题

int main()
{
    
    
    int n, m; cin >> n >> m;

    double res = 0;
    
    while (m--) {
    
    
        int t = floor(res);
        double f = t * 1.0 / n;
        res = res * f + (1 - f) * (t + 1 + n) / 2;
    }

    printf("%.8lf\n", res);

    return 0;
}

猜你喜欢

转载自blog.csdn.net/YingShen_xyz/article/details/117036440