Kids and Prizes

题目链接:https://vjudge.net/problem/SGU-495
题意:n个奖品 m个人, 每个人会拿一个盒子, 盒子里面可能是空的 因为里面的奖品可以被其他人拿过,盒子每次放回,奖品会拿走

问m个人能拿到的奖品数的期望

思路:dp[0]=0 这是边界   那么考虑 dpi] 为前i个人能拿的奖品期望数  所以转移方程dp[i]=dp[i-1] (上一次拿的奖品期望)+ (n-dp[i-1])/n  这一次拿的奖品期望

Kids and Prizes
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 #define ll long long
 4 #define pb push_back
 5 const int maxn =1e6+10;
 6 const int mod=1e9+7;
 7 
 8 double dp[maxn];
 9 
10 
11 int main()
12 {
13     ios::sync_with_stdio(false);
14     cin.tie(0);
15     int n,m;
16     cin>>n>>m;
17     dp[0]=0;
18     for(int i=1;i<=m;i++)
19     {
20         dp[i]=dp[i-1]+(n-dp[i-1])/(double)n;
21     }
22     cout<<fixed<<setprecision(10)<<dp[m]<<'\n';
23 
24 
25 
26 
27 
28 }
View Code

 

上一篇:【LeetCode-数组】拥有最多糖果的孩子


下一篇:1431. Kids With the Greatest Number of Candies