训练指南P327

题意:36张牌分成9堆, 每堆4张牌。每次拿走某两堆顶部的牌,但需要点数相同。如果出现多种拿法则等概率的随机拿。 如果最后拿完所有的牌则游戏成功,求成功的概率。

开个9维数组表示每一堆的状态,模拟搜索一下

 #include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
const int Max = ;
char s[Max][Max];
int A[][Max * Max];
int vis[Max][Max][Max][Max][Max][Max][Max][Max][Max];
double d[Max][Max][Max][Max][Max][Max][Max][Max][Max];
double dfs(int s1, int s2, int s3, int s4, int s5, int s6, int s7, int s8, int s9)
{
if (vis[s1][s2][s3][s4][s5][s6][s7][s8][s9])
return d[s1][s2][s3][s4][s5][s6][s7][s8][s9];
vis[s1][s2][s3][s4][s5][s6][s7][s8][s9] = ;
int T[] = {, s1, s2, s3, s4, s5, s6, s7, s8, s9};
bool flag = true;
for (int i = ; i <= ; i++)
{
if (T[i])
{
flag = false;
break;
}
}//如果全是0,表示结束,这个状态为1
if (flag)
{
return d[s1][s2][s3][s4][s5][s6][s7][s8][s9] = 1.0;
}
int tot = ;
double cnt = ;
for (int i = ; i <= ; i++)
{
for (int j = i + ; j <= ; j++)
{
if (T[i] > && T[j] > && A[i][ T[i] ] == A[j][ T[j] ])
{
T[i]--;
T[j]--;
tot++; // 当前有几种选择方案
cnt += dfs(T[], T[], T[], T[], T[], T[], T[], T[], T[]); // 选择 i 堆 和 j 堆之后剩下的全部取光的概率
T[i]++;
T[j]++;
}
}
}
if (tot > )
d[s1][s2][s3][s4][s5][s6][s7][s8][s9] = cnt / (1.0 * tot); // (1 / tot ) * cnt;当前状态概率
return d[s1][s2][s3][s4][s5][s6][s7][s8][s9];
}
int main()
{
while (scanf("%s%s%s%s", s[], s[], s[], s[]) != EOF)
{
for (int i = ; i <= ; i++)
A[][i] = s[i][] - ''; // A[i][j]用于记录第i堆第j个
for (int i = ; i <= ; i++)
{
for (int j = ; j <= ; j++)
{
scanf("%s", s[j]);
A[i][j] = s[j][] - '';
}
}
memset(vis, , sizeof(vis));
memset(d, , sizeof(d));
dfs(, , , , , , , , ); // 所有的堆都是4个开始搜索
printf("%.6lf\n", d[][][][][][][][][]);
}
return ;
}

UVA1637Double Patience(概率 + 记忆化搜索)的更多相关文章

  1. Topcoder SRM 656 (Div.1) 250 RandomPancakeStack - 概率+记忆化搜索

    最近连续三次TC爆零了,,,我的心好痛. 不知怎么想的,这题把题意理解成,第一次选择j,第二次选择i后,只能从1~i-1.i+1~j找,其实还可以从j+1~n中找,只要没有被选中过就行... [题意] ...

  2. Codeforces 540D Bad Luck Island - 概率+记忆化搜索

    [题意] 一个岛上有三种生物A,B,C,各有多少只在输入中会告诉你,每种最多100只 A与B碰面,A会吃掉B, B与C碰面,B会吃掉C, C与A碰面,C会吃掉A...忍不住想吐槽这种环形食物链 碰面是 ...

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

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

  4. 【NOI2005】聪聪和可可 概率与期望 记忆化搜索

    1415: [Noi2005]聪聪和可可 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1635  Solved: 958[Submit][Statu ...

  5. Codeforces 148D Bag of mice:概率dp 记忆化搜索

    题目链接:http://codeforces.com/problemset/problem/148/D 题意: 一个袋子中有w只白老鼠,b只黑老鼠. 公主和龙轮流从袋子里随机抓一只老鼠出来,不放回,公 ...

  6. HDU - 5001 Walk(概率dp+记忆化搜索)

    Walk I used to think I could be anything, but now I know that I couldn't do anything. So I started t ...

  7. 多校5 1001 HDU5781 ATM Mechine 记忆化搜索+概率

    // 多校5 1001 HDU5781 ATM Mechine // http://acm.hdu.edu.cn/search.php?field=problem&key=2016+Multi ...

  8. CodeForces 398B 概率DP 记忆化搜索

    题目:http://codeforces.com/contest/398/problem/B 有点似曾相识的感觉,记忆中上次那个跟这个相似的 我是用了 暴力搜索过掉的,今天这个肯定不行了,dp方程想了 ...

  9. BZOJ4832: [Lydsy1704月赛]抵制克苏恩 (记忆化搜索 + 概率DP)

    题意:模拟克苏恩打奴隶战对对方英雄所造成的伤害 题解:因为昨(今)天才写过记忆化搜索 所以这个就是送经验了 1A还冲了个榜 但是我惊奇的发现我数组明明就比数据范围开小了啊??? #include &l ...

随机推荐

  1. 如果你的SharePoint出现了,状态服务问题,InfoPath无法正常使用

    Create a new ‘State Service’ Service Application using Powershell February 14, 2012Leave a commentGo ...

  2. iOS:frame访问、设置简化

    看到一些程序都有这种写法,也不知道原创者是谁了.先在博客保存下. 在.m文件 #import "UIView+MyFrameCategory.h" @implementation ...

  3. ios native工程集成react-native的demo

    react-native看到了给现有工程添加react-native环境的时候碰到一个问题: 如何往工程中添加 package.json文件,以及node_modules是怎么来的? 我开始的时候以为 ...

  4. Oracle/PLSQL: ORA-06550

    参考: http://blog.csdn.net/haiross/article/details/20612135 Oracle/PLSQL: ORA-06550 Learn the cause an ...

  5. 轻量级ORM框架——第一篇:Dapper快速学习

    我们都知道ORM全称叫做Object Relationship Mapper,也就是可以用object来map我们的db,而且市面上的orm框架有很多,其中有一个框架 叫做dapper,而且被称为th ...

  6. Python 代码风格

    1 原则 在开始讨论Python社区所采用的具体标准或是由其他人推荐的建议之前,考虑一些总体原则非常重要. 请记住可读性标准的目标是提升可读性.这些规则存在的目的就是为了帮助人读写代码,而不是相反. ...

  7. Python学习笔记7-高级迭代器

    将任何字符串作为python表达式求值: eval()方法: eval(source[, globals[, locals]]) -> value Evaluate the source in ...

  8. 安卓gridview 网格,多行多列实现

    主Activity() private int[] image = { R.drawable.camera, R.drawable.wifi, R.drawable.temperature, R.dr ...

  9. Windows Git安装指南

    步骤如下: 1.资源下载 :Git-1.9.4-preview20140815.exe http://code.google.com/p/tortoisegit/downloads/list 2.安装 ...

  10. Jenkins——构建、集成中的问题

      准备 Jekins   安装插件 MsBuild Plugin Team Foundation Server Plug-in 配置环境变量 我的电脑中设置环境变量,Path中添加msbuild的路 ...