zoukankan      html  css  js  c++  java
  • Bad Luck Island-CodeForce(dp)

    链接:http://codeforces.com/problemset/problem/540/D

    题目大意:

    这个岛上有三种生物   r石头  s剪刀 p布

    求最后只剩一种生物的概率

    用dp[i][j][k]表示概率

    石头和剪刀相遇的概率是p=i*j/(i*j+j*k+k*i),剪刀会被吃掉  所以dp[i][j-1][k]=dp[i][j][k]*p;每一种情况都会有三种情况演变过来的,所以每次都要加上他

    上代码   应该看代码就能看懂

    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    #include<algorithm>
    #include<iostream>
    #include<queue>
    #define N 110
    using namespace std;
    double dp[N][N][N];
    int main()
    {
        int r,s,p,i,j,k;
    
        while(scanf("%d %d %d",&r,&s,&p)!=EOF)
        {
            memset(dp,0,sizeof(dp));
            dp[r][s][p]=1.0;
            for(i=r;i>=0;i--)
            {
                for(j=s;j>=0;j--)
                {
                    for(k=p;k>=0;k--)
                    {
                        double sum=i*j+j*k+k*i;
                        if(i && k)
                            dp[i-1][j][k]+=dp[i][j][k]*i*k*1.0/sum;
                        if(j && i)
                            dp[i][j-1][k]+=dp[i][j][k]*i*j*1.0/sum;
                        if(k && j)
                            dp[i][j][k-1]+=dp[i][j][k]*k*j*1.0/sum;
                    }
                }
            }
            double x=0,y=0,z=0;
            for(i=r;i>0;i--)
                x+=dp[i][0][0];
            for(i=s;i>0;i--)
                y+=dp[0][i][0];
            for(i=p;i>0;i--)
                z+=dp[0][0][i];
            printf("%.12lf %.12lf %.12lf
    ",x,y,z);
    
        }
        return 0;
    }
  • 相关阅读:
    Peer code review
    分析图书管理系统的5W1H
    项目风险分析作业
    课堂练习
    功能分析四个象限
    Android需求分析作业
    电梯演说模板练习
    敏捷流程的理解
    团队模型的小组辩论
    结对编程任意Demo
  • 原文地址:https://www.cnblogs.com/linliu/p/4982317.html
Copyright © 2011-2022 走看看