zoukankan      html  css  js  c++  java
  • Luogu P3802 小魔女帕琪

    link

    题解

    (n = sumlimits_{i=1}^{7} a_i)
    (n) 这么大,貌似难以 (O(n)) 做。于是试图找规律。
    (E(i) = E(i-1) + P(i))(P(i)) 表示第 (i) 位触发魔法的概率。问题在于如何求 (P(i))
    显然对于第 (7) 位, (P(7) = 7! imes prodlimits_{i=1}^{7} dfrac{a_i}{n-i+1})
    考虑对于第 (8) 位的所有情况。
    (1) 位为魔法 (1) 时,概率为 (7! imes prodlimits_{i=1}^{7} dfrac{a_i}{n-i} imes dfrac{a_1-1}{n-7})
    (1) 位为魔法 (2) 时,概率为 (7! imes prodlimits_{i=1}^{7} dfrac{a_i}{n-i} imes dfrac{a_2-1}{n-7})
    按照此规律,可以发现 (P(8) = 7! imes prodlimits_{i=1}^{7} dfrac{a_i}{n-i} imes dfrac{sum_{i=1}^{7}(a_i-1)}{n-7} = 7! imes prodlimits_{i=1}^{7} dfrac{a_i}{n-i} = P(7))
    (forall x geq 7,P(x) = 7! imes prodlimits_{i=1}^{7} dfrac{a_i}{n-i+1})
    (E(n) = (n-6) imes 7! imes prodlimits_{i=1}^{7} dfrac{a_i}{n-i+1})
    这启示我们不会做时,不妨先大胆把式子推出来,从最初状态开始推,也许可以找到规律。

    #include <cstdio>
    
    double a[10];
    int n;
    double ans;
    
    int main() {
    	for (int i = 1; i <= 7; ++i) {
    		scanf("%lf", &a[i]); 
    		n += a[i];
    	}
    	if (n >= 7) {
    		ans = n - 6;
    		for (int i = 1; i <= 7; ++i)
    			ans *= a[i] / (n - i + 1) * i;
    	}
    	printf("%.3lf", ans);
    	return 0;
    }
    
  • 相关阅读:
    14.3 Go iris
    14.2 Go性能优化
    14.1 Go数据结构
    13.3 Go章节练习题
    13.2 Go练习题答案
    13.1 Go练习题
    12.1 Go nsq
    11.3 Go 开发博客
    11.2Go gin
    11.1 Go Http
  • 原文地址:https://www.cnblogs.com/kcn999/p/13746222.html
Copyright © 2011-2022 走看看