zoukankan      html  css  js  c++  java
  • UCF Local Programming Contest 2017 G题(dp)

    这道题的意思是给你n个物品,每个物品需要获得c个,单次这个物品获得的概率是p,问你最多有x次机会

    能够获得完这些物品的总概率是多少

    那么我么可以根据这道题推出状态的情况

    前i个物品用j次机会获得概率

    这样我们走两层循环就行,因为每次这个物品只有这次机会选中和没被这次机会选中两种可能

    所以根据这个情况更新一下答案就ok

    #include<iostream>
    #include<cstring>
    #include<cstdio>
    #include<map>
    #include<algorithm>
    #include<queue>
    #include<set>
    #define ull unsigned long long
    using namespace std;
    typedef long long ll;
    typedef pair<int,int> pll;
    typedef pair<int,pair<int,int> > plll;
    const int N=1e5+10;
    const int inf=0x3f3f3f3f;
    using namespace std;
    int c[N];
    double p[N];
    double f[2510][10010];
    int main() {
        int t;
        cin>>t;
        while(t--){
            int n;
            vector<double> num;
            int i;
            cin>>n;
            num.push_back(0);
            for(i=1;i<=n;i++){
                cin>>c[i]>>p[i];
            }
            for(i=1;i<=n;i++){
                while(c[i]--){
                    num.push_back(p[i]);
                }
            }
            int m;
            cin>>m;
            int j;
            for(i=0;i<=num.size();i++){
                for(j=0;j<=m;j++){
                    f[i][j]=0;
                }
            }
            f[0][0]=1;
            for(i=1;i<num.size();i++){
                for(j=1;j<=m;j++){
                   f[i][j]+=f[i-1][j-1]*num[i];
                   f[i-1][j]+=f[i-1][j-1]*(1.0-num[i]);
                }
            }
            double res=0;
            int k=num.size()-1;
            for(i=1;i<=m;i++){
                res+=f[k][i];
            }
            printf("%.3f
    ",res);
        }
    }
    View Code
  • 相关阅读:
    【MySQL】(三)文件
    【MySQL】(二)InnoDB存储引擎
    Linux Shell脚本编程-信号捕获
    Linux Shell脚本编程-数组和字符串处理
    Linux Shell脚本编程-函数
    Linux Shell脚本编程-语句控制
    Linux Shell脚本编程-基础2
    Linux Shell脚本编程-基础1
    Awk
    Sed
  • 原文地址:https://www.cnblogs.com/ctyakwf/p/12670126.html
Copyright © 2011-2022 走看看