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
  • 相关阅读:
    判断文件结束,feof……
    第五篇 分治思想(例子待加)
    第四篇 枚举思想
    第三篇 贪心思想
    第二篇 递归思想
    第一篇 递推思想
    爬虫系列
    整数划分问题
    html中a标签做容器的问题
    H5学习小结——div+css创建电子商务静态网页
  • 原文地址:https://www.cnblogs.com/ctyakwf/p/13251456.html
Copyright © 2011-2022 走看看