码迷,mamicode.com
首页 > 其他好文 > 详细

TCO 2015 Round 1B DIV1 500 概率题

时间:2015-04-26 06:58:19      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:

【题意】现在有一些线索,每个线索被发现的概率p[i],如果线索i被知道,那么其他线索也可能会被知道,用vector<string> c给出,c[i][j]=‘Y‘表示知道i这个线索,j这个线索能直接知道,问最终发现的线索个数的期望。

 

所有p[i]的和不是1...

求每个clue被选中的概率,由题意,如果知道第i个数,那么可以立即知道其他一些点,那么可以先用floyd,求出当知道结点i后应该知道哪些结点。

然后两重求反,1-(1-p[i1])(1-p[i2])...(1-p[ik])就是所求答案,其中选中i1,i2,...,ik中的任意一个都能选中i。

#include<cstdio>
#include<cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<set>
#include<map>
#include<stack>
#include<vector>
#include<queue>
#include<string>
#include<sstream>
#define eps 1e-9
#define ALL(x) x.begin(),x.end()
#define INS(x) inserter(x,x.begin())
#define FOR(i,j,k) for(int i=j;i<=k;i++)
#define MAXN 1005
#define MAXM 40005
#define INF 0x3fffffff
using namespace std;
typedef long long LL;
int i,j,k,n,m,x,y,T,ans,big,cas,num;
bool flag;
double pa[MAXN];
class TheTips
{
        public:
        double solve(vector <string> c, vector <int> p)
        {
            int n=c.size();
            for (k=0;k<n;k++)
            {
                for (i=0;i<n;i++)
                {
                    for (j=0;j<n;j++)
                    {
                        if (i==j || j==k || i==k) continue;
                        if (c[i][k]==Y&& c[k][j]==Y) c[i][j]=Y;
                    }
                }
            }
            
            for (i=0;i<n;i++) c[i][i]=Y;
            
            for (i=0;i<n;i++) pa[i]=1;
            //for (i=0;i<n;i++) cout<<c[i]<<endl;
            
            for (j=0;j<n;j++)
            {
                for (i=0;i<n;i++)
                {
                    if (c[i][j]==Y)
                    {
                        pa[j]*=1-p[i]*0.01;
                    }
                }
            }
            //for (i=0;i<n;i++) printf("%d %f\n",i,pa[i]);
            
            double ans=0;
            for (i=0;i<n;i++)
            {
                ans+=1-pa[i];
            }
            return ans;            
                        
        }            
};

 

TCO 2015 Round 1B DIV1 500 概率题

标签:

原文地址:http://www.cnblogs.com/zhyfzy/p/4457252.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!