zoukankan      html  css  js  c++  java
  • Tsinsen-A1489 抽奖 【数学期望】

      乔明达太神,其实已经题解非常清楚了,我再推一遍吧。

      题目意思相当于有n个盒子,无差别投m次球,每个盒子的得分为每个盒子里的球的个数。

      第一问:

        假设这个球放在了第i个盒子里,那么 ∆ans = (mi + 1) ^ 2 - mi ^ 2  -->  ∆ans = 2mi + 1

        同时取期望 --> E(∆i) = 2E(∆mi) + 1

        i这个盒子有mi个球(假设已经投出了t个球)的期望为 t * pi 代入  E(∆i) = 2 * t * pi + 1

        特殊到一般,对于任意的i,i = 当前这个选定的i 的概率为pi,那么 E(∆) = sigma(pi * E(∆i)),代入,E(∆) = sigma(2 * t * pi ^ 2 + pi) = 1 + 2 * t * sigma(pi ^ 2).

        那么对于T = [0, m - 1],求和即可,ans = sigma(1 + 2 * t * sigma(pi ^ 2)),ans = m + m * (m - 1) * sigma(pi ^ 2).

      

      第二问:

        对于一个人,我们考虑他的是否中奖情况,将其定义为ci,ci 若为1则中奖,否则没有。那么答案为E(sigma(ci)) = sigma(E(ci)).

        E(ci) 为一个人中奖的概率,E(ci) = 1 - (1 - pi) ^ m.

     1 #include <bits/stdc++.h>
     2 #define rep(i, a, b) for (int i = a; i <= b; i++)
     3 #define drep(i, a, b) for (int i = a; i >= b; i--)
     4 #define REP(i, a, b) for (int i = a; i < b; i++)
     5 #define mp make_pair
     6 #define pb push_back
     7 #define clr(x) memset(x, 0, sizeof(x))
     8 #define xx first
     9 #define yy second
    10 using namespace std;
    11 typedef long long i64;
    12 typedef pair<int, int> pii;
    13 const int inf = ~0U >> 1;
    14 const i64 INF = ~0ULL >> 1;
    15 //*******************************
    16 const int maxn = 100005;
    17 int c[maxn];
    18 double Pow(double base, int num) {
    19     double ret = 1;
    20     while (num) {
    21         if (num & 1) ret *= base;
    22         base *= base;
    23         num >>= 1;
    24     }
    25     return ret;
    26 }
    27 int main() {
    28     int n, m;
    29     scanf("%d%d", &n, &m);
    30     i64 sum(0);
    31     rep(i, 1, n) scanf("%d", &c[i]), sum += c[i];
    32     double ans1(0);
    33     static double p[maxn];
    34     rep(i, 1, n) p[i] = 1.0 * c[i] / sum;
    35     rep(i, 1, n) ans1 += p[i] * p[i];
    36     ans1 *= m;
    37     ans1 *= m - 1;
    38     ans1 += m;
    39     printf("%.2lf
    ", ans1);
    40     double ans2 = n;
    41     rep(i, 1, n) ans2 -= Pow(1.0 - 1.0 * p[i], m);
    42     printf("%.2lf
    ", ans2);
    43     return 0;
    44 }
    View Code
  • 相关阅读:
    SQL over关键字(转载)
    XSLT学习(转载)
    js动态添加options(转载)
    ASP.NET中如何防范SQL注入式攻击(转载)
    Wordpress SEO robots
    RegistryKey类的学习(转载)
    C# Lambda Expressions 简介(转载)
    ‍ps技巧184条(转载)
    2010年年终总结
    JavaScript(文件对象/锚点对象/链接对象)(转载)
  • 原文地址:https://www.cnblogs.com/y7070/p/5027242.html
Copyright © 2011-2022 走看看