[vijos P1919] 最有活力的鲜花
描述
m朵鮮花簇擁在田野間,其中有一束花只有一朵花瓣,有一束花有兩朵花瓣,有一束花有三朵花瓣,如此下去,最后一朵花有m朵花瓣。
愛花的人,每次隨機選一束鮮花,然后統計一下花瓣的個數。再隨機一束。一共隨機n次。一束花可能被隨機到多次。選n次可以發現的花瓣最多的鮮花有多少花瓣。答案需要四舍五入保留到小數點后第四位。
分析
n = 6, m = 3
P1 <- 1 / (6^3)
P2 <- 2/6 * 2/6 * 2/6 - P1 // 三次均<=2,且一定有2
P3 <- 3/6 * 3/6 * 3/6 - P1 - P2 // 三次均<=3, 且一定有3 *排除三次中至少有2的概率和都是1的概率
P4 <- 4/6 * 4/6 * 4/6 - P1 - P2 - P3 // 同上
….
邊計算記錄下 P 的前綴和
迭代地求出 Pn
P <- (1*P1 + 2*P2 + … + n*Pn) / n
P1 = 1 / 4
P2 = 1 - 1/4 = 3 / 4
P = 1 * 1/4 + 2 * 3/4 = 7 / 4 = 1.7500
OK!
等等
P1 <- 1 / (6^3)
P2 <- 2/6 * 2/6 * 2/6 - P1 = (2/6) ^ 3 - P1
P3 <- 3/6 * 3/6 * 3/6 - P1 - P2 = (3/6) ^ 3 - P1 - (2/6)^3 + P1 = (3/6)^3 - (2/6)^3
P4 <- 4/6 * 4/6 * 4/6 - P1 - P2 - P3 = (4/6)^3 - P1 - (2/6)^3 + P1 - (3/6)^3 + (2/6)^3 = (4/6)^3 - (3/6)^3
….
==> Px <- (x/n)^m - [(x-1)/n]^m
意義也很明顯, 表示最大為 x 的概率減去最大不超過 x-1 的概率.
代碼
#include<cstdio> using namespace std;double pow(double a, int p) {if(p == 0) return 1.0;double ans = pow(a, (p>>1));ans *= ans;if(p % 2 == 1) ans *= a;return ans; }int main() {int m, n;double ans = 0.0000;scanf("%d%d", &m, &n);for(int x = 1; x <= m; x++) {ans += pow((double)x / m, n) * x;if(x > 1) ans -= pow((double)(x-1) / m, n) * x;}printf("%.4lf", ans);return 0; }總結
以上是生活随笔為你收集整理的[vijos P1919] 最有活力的鲜花的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [POJ 1222] EXTENDED
- 下一篇: [CODEVS 1173] 最优贸易