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;
    }
    


  • 相关阅读:
    (1)李宏毅深度学习-----机器学习简介
    Git命令之不得不知的git stash暂存命令
    Http2升级方案调研
    神奇的 SQL 之别样的写法 → 行行比较
    熔断机制
    限流算法
    状态机
    布隆过滤器
    负载均衡算法
    K8S Ingress
  • 原文地址:https://www.cnblogs.com/yangykaifa/p/6905377.html
Copyright © 2011-2022 走看看