题目链接 https://cn.vjudge.net/problem/UVA-1637

【题意】
36张牌分成9堆,每堆4张,每次可以拿走两堆顶部的牌,但是要求两张牌的点数相同,如果有多种取法那就等概率地随机拿,如果最后拿完所有的牌就算游戏成功,给定初始9堆牌的状态,问你成功的概率

【思路】
用9元组表示牌堆状态,即每堆牌的剩余张数,dp[i]表示状态i对应的成功概率,由全概率公式d[i]为后继状态成功概率的平均值,用记忆化搜索优化

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<vector>
#include<map>
using namespace std;const int N=10;char g[N][N][N];
map<vector<int>,double> dp;bool input(){for(int i=0;i<9;++i)for(int j=0;j<4;++j) if(scanf("%s",g[i][j])!=1) return false;return true;
}double dfs(vector<int>& cnt,int num){if(num==0) return 1;if(dp.count(cnt)) return dp[cnt];int tot=0;double sum=0;for(int i=0;i<9;++i){if(cnt[i]==0) continue;for(int j=i+1;j<9;++j){if(cnt[j]==0) continue;if(g[i][cnt[i]-1][0]!=g[j][cnt[j]-1][0]) continue;++tot;--cnt[i],--cnt[j];sum+=dfs(cnt,num-2);++cnt[i],++cnt[j];}}if(tot==0) return dp[cnt]=0;else return dp[cnt]=sum/tot;
}int main(){while(input()){vector<int> cnt(9,4);dp.clear();double ans=dfs(cnt,36);printf("%.6lf\n",ans);}return 0;
}

UVA 1637 - Double Patience(概率DP)相关推荐

  1. UVa 11468 (AC自动机 概率DP) Substring

    将K个模板串构成一个AC自动机,那些能匹配到的单词节点都称之为禁止节点. 然后问题就变成了在Tire树上走L步且不经过禁止节点的概率. 根据全概率公式用记忆化搜索求解. 1 #include < ...

  2. 数学期望和概率DP题目泛做(为了对应AD的课件)

    题1: Uva 1636 Headshot 题目大意: 给出一个000111序列,注意实际上是环状的.问是0出现的概率大,还是当前是0,下一个还是0的概率大. 问题比较简单,注意比较大小: A/C & ...

  3. 概率DP,递推(麻球繁殖,UVA 11021)

    能想到是概率DP,但是定义状态dp[i][j]第i天剩j个麻球.然后麻球数量可能会繁殖到非常多,状态太多数组开不下,然后就不会了. 感觉自己总是轻易就放弃了,还是应该再思考一下,一般遇到这种想到DP但 ...

  4. 小Biu的骰子(概率dp)

    小Biu的骰子(概率dp) 题目描述 从左到右有n个方格,每一块方格上有x[i] 块黄金,最初站在第一块方格上,有一个6个面的均匀骰子, 每一个面上的权值是1−6,每次掷骰子之后按照点数y跳到y步之后 ...

  5. 2018.09.01 poj3071Football(概率dp+二进制找规律)

    传送门 概率dp简单题. 设f[i][j]表示前i轮j获胜的概率. 如果j,k能够刚好在第i轮相遇,找规律可以发现j,k满足: (j−1)>>(i−1)(j−1)>>(i−1) ...

  6. Discovering Gold LightOJ - 1030[概率dp或者记忆化搜索]

    题目大意:有一个[1,n][1,n][1,n]的数轴,数轴上的每个对应位置上都有金矿,你初始位置是1,然后你每次都会投色子决定你下一步跳到哪里,如果你跳出了nnn,那么你就要重新投.问你跳到nnn的时 ...

  7. 【原创】概率DP总结 by kuangbin

    概率DP主要用于求解期望.概率等题目. 转移方程有时候比较灵活. 一般求概率是正推,求期望是逆推.通过题目可以体会到这点. 首先先推荐几篇参考的论文: <信息学竞赛中概率问题求解初探> & ...

  8. poj 3071 Football(概率dp)

    http://poj.org/problem? id=3071 大致题意:有2^n个足球队分成n组打比赛.给出一个矩阵a[][],a[i][j]表示i队赢得j队的概率.n次比赛的流程像这样France ...

  9. HDU 5001 概率DP || 记忆化搜索

    2014 ACM/ICPC Asia Regional Anshan Online 给N个点,M条边组成的图,每一步能够从一个点走到相邻任一点,概率同样,问D步后没走到过每一个点的概率 概率DP  測 ...

最新文章

  1. 一只53万!波士顿动力网红机器狗开售,充电器价格1万多!
  2. 中科院王飞跃:新的智能全球化将要来临,人工智能标准化为时尚早
  3. prometheus获取Consul上注册的服务
  4. 再过五分钟,你就懂Oracle的数据库对象了
  5. 国外学校css profile,CSS Print Profile
  6. ESP8266--接线与基础指令(讲解与运用)
  7. 安装centos后 启动mysqld显示mysqld: 未被识别的服务 解决方法
  8. ubuntu 强制结束 pycharm
  9. 再续上一篇:如果哪天沃尔玛也“.CN”了
  10. deepin系统屏幕闪烁问题解决
  11. SLAM | 视觉SLAM中直接法开源算法:LSD-SLAM、DSO
  12. Java—斗地主的洗牌发牌系统(积小流成江海)
  13. 全民健身时代到来,运动类APP如何秀出肌肉?
  14. vcpu和cpu的关系
  15. python将两张图片拼接成一张图_python实现两张图片拼接为一张图片并保存
  16. idea中添加mysql驱动jia包的方法
  17. Python+Selenium2(上)
  18. 有限差分法电磁场matlab,有限差分法的分析电磁场边值问题(定稿).doc
  19. 数据盘html,手把手教你如何刻录数据光盘
  20. Project 2010 架构图

热门文章

  1. 可视化之circular barplot
  2. Java常见面试题(181-200)
  3. 能力开放平台系列-概述
  4. 小白也能学会的调色教程,你学会了吗?
  5. 执一不二 跬步千里-王子密码2011年11月份心得(十)
  6. Kafka consumer多线程下not safe for multi-threaded access问题
  7. 七牛图片上传的使用心得[PHP篇]
  8. 把一个人的特点写具体作文_五年级下册第五单元同步作文《把一个人的特点写具体》范文4篇...
  9. Cadence orcad 删除元件名称的下划线
  10. Oracle 存储过程详解(上)