zoukankan      html  css  js  c++  java
  • zoj3605 Find the Marble --- 概率dp

    n个杯子。球最開始在s位置。有m次换球操作,看到了k次,看的人依据自己看到的k次猜球终于在哪个位置,输出可能性最大的位置。


    dp[m][k][s]表示前m次操作中看到了k次球终于在s的频率。


    #include<cstdio>
    #include<cstring>
    int n,m,k,s,x[55],y[55];
    long long dp[55][55][55];
    int main()
    {
        int i,j,l,T;
        scanf("%d",&T);
        while (T--)
        {
            scanf("%d%d%d%d",&n,&m,&k,&s);
            for (i=1;i<=m;i++) scanf("%d%d",&x[i],&y[i]);
            memset(dp,0,sizeof dp);
            dp[1][0][s]=1;//初始状态就是球本身的位置
            for (i=1;i<=m;i++)
                for (j=0;j<=k;j++)
                    for (l=1;l<=n;l++)
                    {
                        if(dp[i][j][l])
                        {
                            dp[i+1][j][l]+=dp[i][j][l];//没看到这次
                            //看到了这次
                            if (l==x[i]) dp[i+1][j+1][y[i]]+=dp[i][j][l];
                            else if (l==y[i]) dp[i+1][j+1][x[i]]+=dp[i][j][l];
                            else dp[i+1][j+1][l]+=dp[i][j][l];//这里也要j+1呀 就是看到了这次交换但没有不论什么影响
                        }
                    }
            int ans=1;
            for (i=2;i<=n;i++) if (dp[m+1][k][ans]<dp[m+1][k][i]) ans=i;
            printf("%d
    ",ans);
        }
        return 0;
    }
    


  • 相关阅读:
    矩阵距离
    CF409D Big Data
    AT2685 i18n
    P3366 【模板】最小生成树
    P3367 【模板】并查集
    ISBN(洛谷P1055)
    关于数组
    0021---一元一次方程
    0020---求圆锥体积
    0019---求圆台的体积
  • 原文地址:https://www.cnblogs.com/yangykaifa/p/6905377.html
Copyright © 2011-2022 走看看