• hdu 4465 Candy(2012 ACM-ICPC 成都现场赛)


             简单概率题,可以直接由剩余n个递推到剩余0个。现在考虑剩余x个概率为(1-p)的candy时,概率为C(2 * n - x, x) * pow(p, n + 1)  *pow(1 - p, n - x);

    在写出x - 1的情况,就可以发现组合数可以直接递推,所以可以直接求。但是考虑到p可能很小,n可能很大,这样的话直接用pow函数会丢失精度,我们可以把double类型写成log10的形式,这样可以保存精度。

    #include<algorithm>
    #include<iostream>
    #include<cstring>
    #include<cstdlib>
    #include<fstream>
    #include<sstream>
    #include<bitset>
    #include<vector>
    #include<string>
    #include<cstdio>
    #include<cmath>
    #include<stack>
    #include<queue>
    #include<stack>
    #include<map>
    #include<set>
    #define FF(i, a, b) for(int i=a; i<b; i++)
    #define FD(i, a, b) for(int i=a; i>=b; i--)
    #define REP(i, n) for(int i=0; i<n; i++)
    #define CLR(a, b) memset(a, b, sizeof(a))
    #define debug puts("**debug**")
    #define LL long long
    #define PB push_back
    #define SL(a) strlen(a)
    using namespace std;
    
    const int N = 11;
    const int MOD = 1e9 + 7;
    
    int main()
    {
        int n, cas = 1, i, j;
        double p, ans, now;
        while(scanf("%d%lf", &n, &p) != EOF)
        {
            now = log10(p) * (n + 1);
            ans = pow(10.0, now) * n;
            for(i = n - 1; i > 0; i --)
            {
                now = now + log10(2 * n - i + 0.0) - log10(n - i + 0.0) + log10(1 - p);
                ans += pow(10.0, now) * i;
            }
            p = 1 - p;
            now = log10(p) * (n + 1);
            ans += pow(10.0, now) * n;
            for(i = n - 1; i > 0; i --)
            {
                now = now + log10(2 * n - i + 0.0) - log10(n - i + 0.0) + log10(1 - p);
                ans += pow(10.0, now) * i;
            }
            printf("Case %d: %.6lf
    ", cas ++, ans);
        }
    }
    


     

  • 相关阅读:
    RBO基于规则的优化器access paths优先级
    脚本:监控临时表空间使用率
    脚本:格式化的V$SQL_SHARED_CURSOR报告
    脚本:监控并行进程状态
    Oracle内部错误:ORA00600[25012]一例
    Trace obtained enqueue information by set event 10704
    Script:Translate RDBA relative data block address
    [Repost]List of X$ Tables
    Oracle学习笔记:oem手工管理
    Oracle学习笔记:redo重做日志
  • 原文地址:https://www.cnblogs.com/riskyer/p/3295363.html
Copyright © 2020-2023  润新知