zoukankan      html  css  js  c++  java
  • 宁波多校(一) B题 狂赌之渊(dfs+概率)

    概率+暴力dfs

    可以暴力枚举所有的状态,判断是否成立,对于每个状态,记录抽到这个状态的概率,如果能成功,就在答案上加上这个概率

    #include <cstdio>
    #include <algorithm>
    #include<iostream>
    using namespace std;
    const int N=1e5+10;
    int t;
    int a[N];
    int x[N];
    double ans;
    int flag;
    int v[N];
    int d[N];
    int all;
    bool check(int u){
        int i;
        for(i=0;i<3&&!flag;i++){
            if(!v[i]){
                if(d[i]==(x[u]+1)%3)//当前手牌被击败,换一张
                    continue;
                if(d[i]==x[u]-1){//两个人的手牌相等,可以考虑递归检验,如果以当前为首位不行,才换一张
                    v[i]=1;
                    check(u+1);
                    v[i]=0;
                }
                else{//直接击败
                    flag=1;
                    return true;
                }
            }
        }
        return false;
    }
    void dfs(int u,double P){
        if(u==3){
            flag=0;
            check(0);
            if(flag)
                ans+=P;
            return ;
        }
        for(int i=0;i<3;i++){
            if(!a[i])
                continue;
            a[i]--;
            d[u]=i;
            dfs(u+1,P*(a[i]+1)/(all-u));
            a[i]++;
        }
    }
    int main() {
        cin>>t;
        while(t--){
            cin>>a[0]>>a[1]>>a[2]>>x[0]>>x[1]>>x[2];
            all=a[0]+a[1]+a[2];
            ans=0;
            dfs(0,1);
            printf("%.2f
    ",ans);
        }
    }
    View Code
  • 相关阅读:
    Python标准模块--logging
    Spark中决策树源码分析
    常见的相似或相异程度计算方法
    mpi4py实践
    集成学习
    决策树
    git使用
    Ubuntu 14.04 64bit 安装tensorflow(GPU版本)
    KNN算法
    一致性哈希算法原理及其在分布式系统中的应用
  • 原文地址:https://www.cnblogs.com/ctyakwf/p/13251456.html
Copyright © 2011-2022 走看看