zoukankan      html  css  js  c++  java
  • CXB 找玩具

    题目描述

      在游戏开始之前,游戏大师在房间的某些地方隐藏了N个玩具。玩具编号为1到N。您的任务是尽可能多地找到这些玩具。

      你没有任何辅助信息就能找到第i个玩具的概率是p[i]%。您每找到一个玩具后,有可能可以得到一些辅助信息,这些辅助信息是告诉您其他某些玩具所在的位置。如果您已经知道玩具的位置,您一定会找到它。

      给出二维数组clue[1..N][1..N],其中clue[i][j]=‘Y’表示若找到第i个玩具则会告诉您第j个玩具的具体位置;clue[i][j]=‘N’表示第i个玩具没有第j个玩具位置的辅助信息;

      你的任务是计算您在游戏中找到的玩具数量的期望值。

    输入输出格式

    输入格式

       多组测试数据。

       第一行,一个整数G,表示有G组测试数据。1 <= G <= 10

       每组测试数据格式如下:

           第一行,一个整数N。1 <= N <= 50

           第二行,N个整数,第i个整数是p[i],0 <= p[i] <= 100

           接下来是N行N列的二维数组clue

    输出格式

      共G行。每行一个实数。误差不能超过0.00001

    输入输出样例

    输入样例

    10

    1

    50 

    Y

    2

    100 50 

    YN

    NY

    3

    100 0 0 

    YYY

    NYY

    NNY

    3

    0 0 0 

    NNN

    NNN

    NNN

    10

    11 66 99 37 64 45 21 67 71 62 

    NYYNYYNNNN

    NNNNYNNNYN

    YNNYYYYYNN

    YYNYNNNNYN

    NYNNNNNNNY

    YNYYNNYNNY

    NYNNYYYYYY

    NYYYYNNNNN

    YYNYNNYYYN

    NNYYNYNYYY

    3

    50 50 1 

    NNY

    NNY

    NNN

    50

    43 29 22 5 34 0 21 25 31 1 0 3 6 31 2 44 40 41 1 35 32 0 38 3 8 45 38 49 15 48 42 42 13 37 36 8 23 24 38 8 22 5 8 35 50 33 16 37 44 0 

    YYNNYYNNYYNYNYNYNNNNNYYYYNNYYYNNYYNYYYYNNNYYNNNNNN

    YYNYYNNNYNYNNYNNYNNYYYYNYYNNYYYNNYNNNYNNYYYNNYYNNY

    NNYNNYYNNNNYYNYYYNYNNNYNNNYNNNNNYNYYYYNNNNYYNNYNYN

    YNNNYNYNNNYNNNYNNNYYNNYYNYYNNYNYYYYNYNYNYNYNYNYNNY

    NNYNNYNNNNNYYYYYYNYNNYNNNNYNNNNNYYNNYYNNYNYNYYYYNN

    YYYYNYNNNYNNYYNYNYYYNNNNYNYYNYNNNNNYNNNNNYNNNNYYYN

    YYYNNNYYYYNNNNNNYYNNNNNNNNYYNNNNYYNYYNYYYNNNYYYYYY

    NYNNYNYNYYNNYYNNYYYNYNNYYYNYYYNYNNYNYNNNNNNNYNYYNN

    YYYNNNYYNNYNYNYNYNYYYNYYNNYNYNYNNNNYNNNNNNYYNNYYYY

    YYYYYYNNYNYYYYYNYYYNYNYYYNNNYNYNYYNNYNYYYYYNYNYNNY

    NYNYYNYNYNNYNNYNNNYYYYNNYYYNYNNYNNYNYYNNNNYYNNYNYN

    YYYYYYYYNNNYYYNNNYNYYNYYYNNYNNNNYNNNYYYNNYNYYNNYYN

    NNYNNNNYYNYNNYNNNYYNNYNNYYYNNYYYYNYNNNNYNNNYYYNNNN

    NYYNNNNNNYYYYNYYYYYYYYYNYYYNYYNYNNYYYNYNYYNYYYYYYN

    YNYNYNNNNYNNNYYYYNNNYYNNNYYNNNNYNNYYYYYYYYNNYYNNYY

    NNNNYNYNNNYNYYYNNYYYNNYNYNNYYNNNYNNNNYYYNYNYYYNYNN

    YNYYYNYNYNNYYNYYYNNNYNNNNNNNYYNYNYYNNYYYNNNNYYNNNY

    YNYNYNNYNNYYNYYYNYYYYYYYNYYYYNYYNYYNYNNYNNYNYNYYYY

    YNNYNNYYYYYYNYNYNNYNYNYYYYYNYYNYNNYNNNNNYNNYYYYNNN

    NYNNYYNYNNNNNYYYNNYYNNYNYNNNYYNYNYYYYYYYNNNNNNNNYY

    YNYNNYNYNNYYNYNNYNNNNNNYNNNYYYNNYYNNNNYYNNNNNNYNNY

    YYNYYYYYYNYYYYYYNYYYNNYYNYNNNYYYNNYNYNYYYYYYYNNYNN

    NNNNYYNYNNYYYYNNYYNNYNNYYYNNYYYNNNNNNNNNNYYNYNYYNN

    NYYNNYNNNYYYYYYNYYYNYNYNYYYYYNNNYNNNNYYYYNNNYNNYYN

    YNYYNYYNNNYYYYNNNYYNYNNNYNYNNNYYYNNYYYNYYNNNYNYNNY

    NYYYNYYNYYNYNYNNNNYNNNNYNYNNYNNNNNYYYYYYYYYYNYYNNN

    NNNYYYYYNNYYNNYYYYYYYYYYNNNYNNNYYNYYYNYYNYYYNNYYYN

    YNYNNNNNNYYNNNNNYNNNYYNNYYNYYYNNNNNNYYYYYYYNYYYNYY

    NYYYYYYNYNYYNNNNNYYYYNYYNNYNYNYNNNYNYYYNNYNNYYNYYN

    YNYYYYYYNYYYNNYYNNYNNYYNYNNYNYYYNYNYNYNNNYNYYNNNYN

    NYNYYYYYNNNNYNYNNNNNYYYNNNYNYYYNNNYNNYYNNYYNNYNNYY

    NNNYYNYYYYYYYYNNNYYYYNYYYYYYNYNNNYYNNYYNYYYYNYYNYY

    YYNNYNNYNYYNYYYNYYYYYYYYYYYNNNNYNNYNYNYNNYYYNYNNYY

    YNYNNYNYYYYYYNNNYNYYNYNYYYYNNYNYNNYNYYYYYYYYYNNNNY

    YNNNNNYYYNNYYYYNNYYNYNNNYYYNYNYNYNNYYYNNYNNYYNNYYN

    NYNYYNYNNNYYNNYNNNNYNYYYNYYNNYNNYNNYYNNNNYYNYNNNYY

    YNNYYNYNNNNNNNYNNNYYYNNNYNYNYYNYNYYYNYNYYYYYYYNYNY

    YNYNNYYNNNYNNNNYYYNNYYYNNYNNNNNNYNYNYNNNYNNNNYNNYN

    YNYYYYYNNYYYNNNYNYYYNYYNYNYYNNNYYNYNYYYNNNNYNYYNYN

    NYNYNNNYNYYYYYYNYNYNNYNYYYNYYYNYNYNNNYNNNNNYNYNYNN

    YYNYYNNYYYYYYYYNNYNYYYYYNYYYYYNYYYNYNNNYYNNYYYNNYY

    YYNNNNNYYNYNYNNNNNYNNYYNNYNYNNNYYNYNYNNYNYNNNYNNNY

    YNYYNYYYNYYNNYYYNNNNYNYNYYYYNNNNYNYYYNNNNNYNNNNYYY

    NNYYYYNYYNYYNYYNNYNNNYNNNNNYNNNYNYYNNNYNYNYNYNNYYN

    YYNNYNYYNYYYYYNYYYNNNYYNYYYNYYYNNYYYNYYNNYNYNYNNNN

    NYNYNYNNNYYYYNYYNYNYYYYNYYNNYYYYNNNNNNNNNYYYNYYYNY

    YNYNNYNYNNNYNYYNYNNNNNYYYYNYNNNNYNNNYYNNNYYNNNYYNN

    NYNNYYYNYNNYYNNNYYNYNNYNYNNNNYYNNYNYNNYYNYNNNYNNNN

    NNYNYYNYNYYNYYNYYYYYYNNNYNYYYYNNYNYYYNYNYNYNYNYYYY

    NNNYNNYYYYNNYYYYYNNYYYYYYNNYNNNYYYYYYNNYNYYYNNYNYN

    50

    17 4 18 9 16 16 15 14 9 0 1 14 2 12 4 1 9 17 17 9 16 4 9 2 0 3 4 7 17 6 1 10 13 2 0 3 10 10 9 2 7 18 7 16 9 13 19 5 18 10 

    YYNNYYNYNYYNYYYYYYYYNNNNYYYNYNYYYYNNYNNYNYYYNNYNYN

    YYNNYYNYNNYYNYYNNNNNNYYYNNNNNYNNNNNNYNNNNNYYYYYNNN

    NYYNYNNYNNNYYYYNYYYNYNNYYYYYYYYYNNYYYYNYNYYYNYNYYN

    YNNNNNYNNYYYNYYNNNYNYYNYYNNNYYNYYNNYNNYNNNYNNYNNNY

    NNNNNYYYNNNYNYNYYNNYNNYYNYNNNYNYNYNYYNYYYNYNYNYNNY

    NNNNYYNYYYNYYNNYYYNNNNYYYNYNNNYNYYYYYNNYNNNNNYNNNN

    YNNNYNYNYNNNNYNYNNNNYYYNYYYNNYYNYNNNYYYYNNNYYYYYNY

    YYNNYYYYYNYYNNNNNNNYNNNYNNYNYYYNYNYYYNNNYNNNYYYNNN

    NNNYNNNYNNNNYYNNYNNNYYYNNYYNYNYNNYYYNNYNNYNNYNYNNN

    NYYYNNYYNNYNNNNYYNNYNYNYNNYNNNNYNNNNYNYNYNNNNNNNYY

    NNNNYYNYYNNYNNNNYNYNNYYNNYNYNNYNNYNNYNYYYYNNYYYNYN

    YNYNNNYYYYYYYNYNYNNYYYYYNNYNYYNNYNNYNYYNYNNNNNYNYY

    NYYYYNNNYYYYYYNNNNYYYYYYNYYNNYYYNNNNNYNYNYNNNNNNNY

    YNNYYNYYNNNNYYNNYYNYYYNYNNYYNYYYNNNYYYNYYYYYNYYNYY

    YNYNYYNYYYYYNNYNNNNYNNYYYNYNNYYNNNYNNNNYNYNNNNNYYY

    YNYNYNNNYNYNYNNYNYNNNYNYNNNNYYNYYYYNYYYYNYNYNYYNYN

    NNNNYYNNYNNYNYYNYYYNNNNNYNNNNNNNYYYYNNYYYYNNNNNNYY

    NYNNYYNYNNYNYYYYNNYNNNNNYYNYNNNNYYNYYNYYYYNNNNYNYY

    NYNNNYNYYYYYYNNNNYYNNNNYNYYYYNNNYYNYNYYYNNNNYYYNNY

    YNNYYYNYYYNYNYYYYYYNNYYNYNNYYNNNYNNNYYNYNYYYYYYYYN

    NYYNYYYNNYNNYNYYNNNNNYYYYYNYYYYNNYYNYNYYYYNNYNYYYY

    YNNYNNNYNNYNYYNNYYYNYYYYYNNNNNYYNYYNYYNNNNYYYYNYNN

    NYNNYYYNNNNNNYYNNNYNNNYYYNYYYNNNYNYYNYYNYYNYYNNYYN

    YNYNYNYYNNYNYNYYNNYYYYYNYNNYYNNNYYNNYYYNNYYYNYYYYY

    YNNNYYYNYNNNYYYNNNNNNYNYNYNYNYYYYYNYYYYNYNNYYYYYYY

    YNNNYNYYYYNYNNNYNYNNYYNNYYYNYNNYYNYNNYNYNNNNYYNYNY

    YNNYNYNNYYNYYYYNYYNYNNNNNNYNYYYNNNNNNNYNYNNYNYNYYN

    YYNYYNNNYNNYNYNNYYYNYNNYNYYYYNNYYYYNYYYNYYNNNNYYNN

    YYNYYNNNNYNNYYYYYNYNYNYYYYYNYYNNYYNNNNNYYNYNNNNNYY

    YYNNNYNYNNYYYNYYNYYYYNYNYNNYNYYNYNYYNYYYYYYYYYNYNN

    NYNYYYNYYNNYYNNNNNYNNYNNYYNNYYYYNNNYYNYNNNYNNYNYNN

    NYYYYNYYNNNNYYYNNYNYNNYNYNYYNYNYNNYNNNNNYNYNYNYYYY

    YNYYNNNNNNYYYYYNNNYNYNNNNNYNNNYNNNNYNYNYNYNNNYNYYY

    YYYNYYNNNYNYYYNNNYNYYNYNNYNYNYNYNNYNYYNNYNYNNNNYNN

    NYYNNYNYNYYNYYNNNYNYYYNNNNNYYYYNNYYNNYYNNNYNYYYYYN

    YNNYYNYYYYYYYNNNNNYYYYNYYNNNYNNNYNYYYNYYYNYNNNNYNN

    NNYYNYNYYNNYNNYYNNNNNYNYNNYYYNNYYNNYYNNYNNYYYYYNNY

    NNYYYYNNYYYYNYYYNYYNNYYYYNYNYYNNNNNNYNYNNNYYYNYNYN

    YNNNNYNYNYNYYYNYYYYYYYYNYYNYNYYYNYNYYYNNYYNNNNNNYY

    YNNYYYYYYNNNYNNYYYYYYYNNYYNYYNNNNNYNNNYNNYNNNNNYYY

    YYNNYNNNNYNNNNNYNNNYNNYNNYYYNNYYNYNYYNYNNNNNYNYYNN

    YNNYNNYNNNYYYNNNNNNYYNYNYYNYYNYNYYNNYNYNYNYYNYYYNN

    YYNNYNNNYYNNYNNNYNNNNNYYNYNYYNNYNYYYYYNYYYYNNNYYNN

    NNNYYNYNNYYNNNNYNYNNYYNNNNNYNNYYYYYYYNNYNYNYNNYNNY

    NNYNNYYYNNNYNNYNYNNNYNNNYYYNNYNNNNYNNNYYYNYYNYNNNY

    YNNNYNNYNNYNYYYNNNNNNYYYYYYYNNNNYYYYNYNNNNNYYNYYNY

    YYYNNYNYNYYNYYYNYNYYNYYNNNNYNYYNYYYYNNYNNNNYNNYNNY

    YNNYYNNYNYNYYNYYNNYYYNNYNNNYYYYNYNYNYYNYYNYYNNYYYY

    YNYNYYYYNNYYYYYYNNNNNYYNNNNYYNNNNNNYYYNNNNNNYNYYYN

    NNYYNYNYNNNNNNYNYYYYNYNYYNYYYNYNYYYYNNYNNYNYYYNNYN

    50

    33 11 4 49 43 24 50 25 20 15 44 27 5 50 35 19 18 24 17 22 37 44 10 1 7 34 49 48 28 26 45 8 40 25 18 18 21 21 14 17 21 20 27 29 19 6 28 49 26 31 

    NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN

    NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN

    NNNNNNNNNNNNNNNNNNNNNNNNYNNNNNNNNNYNNNNNNYNNNNNNNN

    YNNNYNNNNNNNNNNNNNNYYNNNNNNNNNNNNNNNNNYNNNNNNNNNNN

    NNNNNNNNNNNNNNNNNNNNNNNYNNNNNNNYNNNNNNNNNNNNNNNNNY

    NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNYNNNNNNNNNNNNNNNNNN

    NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN

    NNNNNNNNNNNNNNNNNNNNNNYNNNNNNNNNNNNNNYNNNNNNNNNNNN

    NYNNNNNNNYNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN

    NNNNNNNNNNNNYNNNNNNNNNNNNNNNNNNNNNYNNYNNNNNNNNYNNN

    NNNNNNNNNNNNNNNNNNNNNYYNNNNNNNNNNNNNNNNNNNNNYNNNNN

    NNNNNNNNNNNNNNNNNNNNNNNNYNNNNNNNNYNNNNYNNNNNYNNNNN

    NNNNNNNNNNYNNNNNNNYNNNNNNYNNNNNNNNNNNNNNNNNNNNNNYN

    NNNNNNNNNNNYNNNNNNNNNNNNNNNNNNNYNNNNNNNNNNNNNNNNNN

    YNNNNNNNNNNNNNNYNNNNNNNNNYNNNNNNNNNNNNNYNNNNNNNNNN

    NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNYNNNNNNNYNNNNNN

    NNNNNNNNNNNNNNNNNNNNNNNNYNNNNNNNNNNNNNNNNNNNNNYNNN

    NNNNNNNNNNNNNNNNNNNNNNNNNNNNYNNNNNNNNNNNNNNNNNNNNN

    NNNNNNNNNNNNNNNNNNNNNNNYNNNNNNNNNNNNNNNNNNNNNNNNNN

    NNNNNYNNNNNNNNNNNNNNNNNNNNNNNNYNNNNNNNNNNNNNNNNNNN

    NNNNNNNNNNNNNNNYNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN

    NNNNNNNNNYNNYNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN

    NNNNNNNNNNNNNNNNNNNNNNNNNNNNYNNNNNNNNNNNNNNNNNNNNN

    NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN

    NNNNNNNNNYNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNYNNNNY

    NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNYNNNNNNNN

    NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNYNNNNNNNNNNNYNNNN

    NNNNNNNNNNNNNNNNNNNNNNNYNNNNNNNNNNNNNNNYNNNNNNNNNN

    NNNYNNNNNYNNNNNNNNNNNNNNNNNNNNYYNNNNNNYNNNNNNNNNNN

    NNNNNYNNNNNNNNNNNNNNNNNNNNNNNNYNNNNNNNNNNNNNNNNNNN

    NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN

    NNNYNNNNNNNNNNNNNNNNNNNNNYNNNNNNNNNNNNNNNNNNNYNNNN

    NNYNNNNNNNNNNNNNNNNNNNNNNNNNNNYNNNNNNNNNNNNNNNNNNN

    NNNNNNNNNNNNNYNNNNNNNNNNNNNNYNNNNNNNNNNNNNNNNNNNNY

    NNNNNNNNNNNNNNNNNNNYNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN

    NNNNYNNNNNNNNNYNNNYNNNNNNNNNNNNNNNNNNNNNNNNNYYNNNN

    NNNNYNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNYNNNN

    NNNYNNNNNNNNNYNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN

    NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN

    NNNNNNNNNNNNNNNNNNNNNNYNNNYNNNNNNNNNNNNNNNYNNNNNNN

    NNNNNNNNNNNNYNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN

    NNNNNNYNNNNYNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN

    NNNNNNNNNNNNNNNNNNNNNNNNNNNYNNNNNNNNYYNNNNNNNNNNNN

    NNNNNNNNNNNNNNNNYNNNNNNNNNNNNNNNNNYNNNNYNNNNNYNNNN

    NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNYNNNNNNNNNYNNNN

    NNNNNNNNNNYNNNNNNNNNNNNNNNNNNNNNNNNNNNYNNNNNNNNNNN

    NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNYNNNNNNYNNNNN

    NNNNNNNNNNNNNNNNNNYNYNYNNNNNNNNNNNNNNNNNNNNNNNNNNN

    NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNYNNNNNNYNNNNNN

    NNNNNNNNNNNNYNYNNNNNNNNNNNNNNNNNYNNNNNNNYNNNNNNYNN

    50

    61 24 45 93 76 39 79 84 77 68 43 100 21 26 27 82 31 70 23 89 98 74 87 75 73 39 91 15 52 46 15 58 93 73 75 73 30 59 89 87 55 5 46 28 31 36 98 12 42 61 

    NNNNNNNNNNYNNYNNNNNYNNNNNNNNNNNNNNNNNNYNNNNNNNNNNN

    YNNNYNYNNNNNNYNNNNYNNNYNNNYNNNNYNNNNNNNNNYNYYYYYNN

    NNNYNNYNYNYNNNNNNNNNNNNNNNNYNNYYNNNNNYNYNNNYNNNYNN

    YNNYNNNNNNNYNNNNNNNNNNNYNNNNNNNNNNNNNNNYNNNNNNNNNN

    NNNNYNNNYYNNNNNNNYNNYNYYNYNYNNNNNYNNYNYNYNNNNYNNNN

    NNYNNNNYNYNNNNYNNNNNYNYNYYNNYYYNNNNNNNNNYNNNNNNNNN

    NNNNYNNNNNNNNNNYYYNNNNNNNNNNNNNNNNNYNNNYYNYNNNNNNY

    NYNYNNNNNNNNNNNNNNNNNNNNNNYYNNNNNNNNYYNNNNNYNNNNNN

    NNYNYNNNNNNYNYNNNNNYYNNYYNNNNNNNNNNYYNNNNNNNNNNYNY

    YNNNNNNYNNNYNNNNNNNNYYNNYNNNYNNYNNNNNNNNYYNNYYNNNY

    YNNNNYNNNNNYNNYNNNYNNYNNNYNNNNNNYYNNNNYNNNNYNNNNNY

    NNNNNNNNNNNNNNNNNNNNYNNNNNNNNNNNYYNYNNNNNNYNNNNNNN

    YNNNNNNNYNNNNNNNYNNNNNYNNYNNNNYNNNNNNNNNNNNNNYNYNY

    NNNNNNNNNYNYNNNNNNNNNYNNNNNNNNNYYNNNNNNNNNYNYNNNNN

    NNYNNNNNNNNNNNYNNYYYNNNNNNNNNYNNNYNYNNNNNYNNNNNYYN

    YYNNNNNNYNNNNNNNNNNNNNNNNNNYNYNNYNYNYNNNNNNNNNNNNN

    NNNNYYYNNYYNNNNNNNNNNYNYNNNNYNNNNNYNNNNYNNNNNYYNNN

    YYNNNNNNYNNYNNNYNNNYNNNYYNNYNNNNNNNNNNYNNNYNNNYNNY

    NNNNYNYNYNYNYNNNNNNYYYNNNYNNNNNNNNNNNNNNNNYNNNNNNN

    YNNNNNNNNNYNNNNNYNNYNYNNNNNNNNNYNNNNYNNYNYNYNNYNYY

    NNNNYNNNNNNNNNYNNNNNNNNNYNNYNNNNNNYNNNYNNNNNYYNNNN

    NNNNNNNNNNNNNNNYNNNNYNNNNNNNNNNYNNYNYYNNNNNYYNNNNN

    NNNNNNYNYNYYNNNNNNNNNNNNNNNYNNNNYYYYNNYYNNYNNNNNNN

    NNNNNNNNYNNNNNNNNNYNYNNNNYNNYNYNYNNNNNNYNNNNNNYNNN

    NYYYNYNNNYYNNNNYNNNNNNNNYNNYNNNNNYNNNNYNNYNNNNNNNN

    NNNNNNNNNYNNNNNNNYNYNYNNNYNNYNNNNNNNNNNNYNNNNNYYYN

    NNYNYNNNNNNNYNNNNNYNNNNNNNNNNNNNNNYNYYNNNNNYNYYNYY

    NNNNYNNNNNNNNNNNNNNNYYNNNNNYNNYYNNNNNNNNNNNNYYNNYN

    NNNNNNNNYNNNNNNNNNNNNYYNNNNNNNNYNYNYNNNNNNNYNNYNNY

    NNNNNNNNNNNNYNYNNNNNNNNNNNNYNNNYNNNNNNNNNNNYNNNNNY

    NNNNYNYYNNNNNYYNNNNNNNNYNYNNNNNNNNNNNYNNYNYYNNNNNN

    NNYNNNNNYYYNNNNNNYNNNYNNNNYNNNNNNNNYYYNNNNNNNNNYNN

    NNYYNYNNNYNNNYNNNNNNYNNYNNNNNNNYNNNNNNNNNNNNYNNNNN

    YNNNNNYNNNNNYNNNNNNNYYYYYNNNYNNNYNNYNNNYNNNYYNYNNN

    NNNNNNNNNNNNNYYNYNNNNNNYNYNNNNNNNNNNYNNYYNNNNNNYNY

    NNNNNNYNNYNNNNNYNNNNNNNNNYYYYNNNYNNYNYNNYNNNNNYNNN

    NYNNNYNYNNNNNNYYNNNNNNNNNYYYNNYNNNNNNNNNNNYNNNNYNN

    NNNNNNYNNNNNNNNYNNNNNNNNNNNNNNYNNNNYNNNYNNNNNYYNNN

    NNNNNNNNNNNNNYYNNNNYNNNNYNNYNNYYNNNNYNYNNNNNNNYNNN

    NNNNNNNYYNNNNNNNNNNYYNNNNNYNNNNNNNNYNYNNNNYNNNNNNN

    YNNYNNNNNNNNNNYNNNNNNNYNNNNNNNNNNNNYNNYNYNNYNNNYNN

    NNNNNNNNNNNNNNNYNNYNYNNNNNNNNNNNNNNNNNNNNNNYYNNNYN

    NNNYNNNNNNNNNYNNNNYNNNNYNNNNNNNYNNYNNNNNNNNYNYNNNN

    YNNNYNNNNNNNNNNYNYNNNNNNYNNNYNNNNNNNYYYNNNNNNNYNYN

    YNNNNNNNNNYNNNYNNYNNNNNNYNNNYYNYNYNNNYNYNNNNNNNNYN

    NNNNNNYNNNNYNNNNNYNNNNYNNNYNYNNNNNNNNYNNNNNNNNNNNY

    NNYNNNYNNNYNNNNNNNNYYNNNNNNNNNYNYYNNNNNNNYYNNNNNYN

    NYYYYNNNNNYYNNNNYYNNNNYNNNNNYNNNNYNYNNYNNNNNNNNYNN

    NNNNNYNNNYNNNNNNNYNYYNNNNNNNNYYNNNYYNNYYNNYNYNNYNN

    NNYYNNNNNNNNYNNNNNNNNNYNNNNNNNNNYNYNNNNNNNYNNNNNNN

    输出样例

    0.5

    1.5

    3.0

    0.0

    9.999891558057332

    1.7525

    49.999985475571165

    49.61517659720631

    46.23795684631021

    50.0

    题解

      可以看出这题有环,缩点处理一下,更新概率即可。

    #include <iostream>
    #include <fstream>
    #include <cstdio>
    #include <cstring>
    
    #define MAX_N (50 + 5)
    
    using namespace std;
    
    int G;
    
    int n;
    double p[MAX_N];
    int a[MAX_N][MAX_N];
    
    int dep;
    int dfn[MAX_N], low[MAX_N];
    int vis[MAX_N];
    int st[MAX_N], top;
    
    int c[MAX_N], tot;
    double p_new[MAX_N];
    int a_new[MAX_N][MAX_N];
    int v[MAX_N];
    int in[MAX_N];
    int q[MAX_N], ft, bk;
    double ans;
    
    void Init();
    void Read();
    void Update();
    void Tarjan(int);
    void Solve();
    
    int main()
    {
        scanf("%d", &G);
        while(G--)
        {
            Init();
            Read();
            Update();
            Solve();
        }
        return 0;
    }
    
    void Init()
    {
        memset(dfn, 0, sizeof dfn);
        memset(low, 0, sizeof low);
        memset(vis, 0, sizeof vis);
        memset(a_new, 0, sizeof a_new);
        memset(v, 0, sizeof v);
        memset(in, 0, sizeof in);
        dep = 0;
        top = 0;
        tot = 0;
        ft = 1;
        bk = 0;
        ans = 0;
        return; 
    }
    
    void Read()
    {
        char s[MAX_N];
        scanf("%d", &n);
        for(register int i = 1; i <= n; ++i)
        {
            scanf("%lf", p + i);
            p[i] /= 100;
        }
        for(register int i = 1; i <= n; ++i)
        {
            scanf("%s", s + 1);
            for(register int j = 1; j <= n; ++j)
            {
                a[i][j] = (s[j] == 'Y');
            }
        }
        return;
    }
    
    void Update()
    {
        for(register int i = 1; i <= n; ++i)
        {
            if(dfn[i]) continue;
            Tarjan(i);
        }
        for(register int i = 1; i <= tot; ++i)
        {
            p_new[i] = 1;
        }
        for(register int i = 1; i <= n; ++i)
        {
            p_new[c[i]] *= (1 - p[i]);
        }
        for(register int i = 1; i <= n; ++i)
        {
            for(register int j = 1; j <= n; ++j)
            {
                a_new[c[i]][c[j]] |= a[i][j];
            }
        }
        return;
    }
    
    void Tarjan(int x)
    {
        dfn[x] = low[x] = ++dep;
        st[++top] = x;
        vis[x] = 1;
        for(register int i = 1; i <= n; ++i)
        {
            if(a[x][i])
            {
                if(!dfn[i])
                {
                    Tarjan(i);
                    low[x] = min(low[x], low[i]);
                }
                else if(vis[i])
                {
                    low[x] = min(low[x], dfn[i]);
                }
            }
        }
        if(dfn[x] == low[x])
        {
            c[x] = ++tot;
            ++v[tot];
            vis[x] = 0;
            while(st[top] != x)
            {
                c[st[top]] = tot;
                ++v[tot];
                vis[st[top--]] = 0;
            }
            --top; 
        }
        return;
    }
    
    void Solve()
    {
        int x;
        for(register int i = 1; i <= tot; ++i)
        {
            a_new[i][i] = 0;
            for(register int j = 1; j <= tot; ++j)
            {
                in[i] += a_new[j][i];
            }
            if(!in[i]) 
            {
                q[++bk] = i;
            }
        }
        while(ft <= bk)
        {
            x = q[ft++];
            for(register int i = 1; i <= tot; ++i)
            {
                if(a_new[x][i])
                {
                    --in[i];
                    p_new[i] *= p_new[x];
                    if(!in[i]) 
                    {
                        q[++bk] = i;   
                    }
                }
            }
        }
        for(register int i = 1; i <= tot; ++i)
        {
            ans += v[i] * (1 - p_new[i]);
        }
        printf("%lf
    ", ans);
        return;
    }
    参考程序
  • 相关阅读:
    周鸿祎:很多程序员聪明,但我一看就知道他不会成功
    Ubuntu/centos/redhat/SUSE sipp安装(带rtp支持,3.5.1版本)
    ffmpeg源码分析之媒体打开过程
    搜集的动植物分类、检索网站
    sipp命令 各参数含义
    最简单的一个win32程序
    vi学习笔记
    删除结点 (双向链表)
    插入结点(双向链表)
    La=LaULb (单链表)
  • 原文地址:https://www.cnblogs.com/kcn999/p/10648352.html
Copyright © 2011-2022 走看看