UVA1637Double Patience(概率 + 记忆化搜索)
训练指南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(概率 + 记忆化搜索)的更多相关文章
- Topcoder SRM 656 (Div.1) 250 RandomPancakeStack - 概率+记忆化搜索
最近连续三次TC爆零了,,,我的心好痛. 不知怎么想的,这题把题意理解成,第一次选择j,第二次选择i后,只能从1~i-1.i+1~j找,其实还可以从j+1~n中找,只要没有被选中过就行... [题意] ...
- Codeforces 540D Bad Luck Island - 概率+记忆化搜索
[题意] 一个岛上有三种生物A,B,C,各有多少只在输入中会告诉你,每种最多100只 A与B碰面,A会吃掉B, B与C碰面,B会吃掉C, C与A碰面,C会吃掉A...忍不住想吐槽这种环形食物链 碰面是 ...
- HDU 5001 概率DP || 记忆化搜索
2014 ACM/ICPC Asia Regional Anshan Online 给N个点,M条边组成的图,每一步能够从一个点走到相邻任一点,概率同样,问D步后没走到过每一个点的概率 概率DP 測 ...
- 【NOI2005】聪聪和可可 概率与期望 记忆化搜索
1415: [Noi2005]聪聪和可可 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1635 Solved: 958[Submit][Statu ...
- Codeforces 148D Bag of mice:概率dp 记忆化搜索
题目链接:http://codeforces.com/problemset/problem/148/D 题意: 一个袋子中有w只白老鼠,b只黑老鼠. 公主和龙轮流从袋子里随机抓一只老鼠出来,不放回,公 ...
- 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 ...
- 多校5 1001 HDU5781 ATM Mechine 记忆化搜索+概率
// 多校5 1001 HDU5781 ATM Mechine // http://acm.hdu.edu.cn/search.php?field=problem&key=2016+Multi ...
- CodeForces 398B 概率DP 记忆化搜索
题目:http://codeforces.com/contest/398/problem/B 有点似曾相识的感觉,记忆中上次那个跟这个相似的 我是用了 暴力搜索过掉的,今天这个肯定不行了,dp方程想了 ...
- BZOJ4832: [Lydsy1704月赛]抵制克苏恩 (记忆化搜索 + 概率DP)
题意:模拟克苏恩打奴隶战对对方英雄所造成的伤害 题解:因为昨(今)天才写过记忆化搜索 所以这个就是送经验了 1A还冲了个榜 但是我惊奇的发现我数组明明就比数据范围开小了啊??? #include &l ...
随机推荐
- ios native工程集成react-native的demo
react-native看到了给现有工程添加react-native环境的时候碰到一个问题: 如何往工程中添加 package.json文件,以及node_modules是怎么来的? 我开始的时候以为 ...
- 1、开篇:公司管理经验谈 - CEO之公司管理经验谈
作为一家IT公司的CEO,我很高兴与大家通过博文的方式进行沟通交流.一方面能够将自己的成长之路以博文的方式记录下来,另一方面是能够与大家交朋友,与大家沟通公司管理方面的知识和经验. 首先,笔者在200 ...
- JAVA NIO Channel
Basic: 多数通道都是链接到开发的文件描述符的.Channel类提供维持平台独立性的抽象过程. 通道是一种途径,访问和操作操作系统,缓冲区是数据操作点: Channel类继承结构图: 通过 ...
- 常用MySQL图形化管理工具
MySQL的管理维护工具非常多,除了系统自带的命令行管理工具之外,还有许多其他的图形化管理工具,这里我介绍几个经常使用的MySQL图形化管理工具,供大家参考. MySQL是一个非常流行的小型关系型数据 ...
- win10关机指示灯亮解决办法
新上市的win10,大家都迫不及待的装上了,但是却遇到了很多问题. 对于win10关机指示灯亮的解决办法有下面几种. 指示灯 如果是只有电源的指示灯亮,拔掉电源即可. 如果是信号灯和其他的指示灯都亮原 ...
- python爬虫学习(8) —— 关于4399的一个小Demo
堂弟喜欢各种游戏,在没有网络的情况下,上4399显得很无力. 另外,4399广告好多,,而且加载慢.. 怎么办,,写个爬虫吧,,把4399上的"好玩"游戏爬下来. 1. 分析阶段 ...
- MYSQL基础操作
MYSQL基础操作 [TOC] 1.基本定义 1.1.关系型数据库系统 关系型数据库系统是建立在关系模型上的数据库系统 什么是关系模型呢? 1.数据结构可以规定,同类数据结构一致,就是一个二维的表格 ...
- PAT 1049. 数列的片段和(20)
给定一个正数数列,我们可以从中截取任意的连续的几个数,称为片段.例如,给定数列{0.1, 0.2, 0.3, 0.4},我们有(0.1) (0.1, 0.2) (0.1, 0.2, 0.3) (0.1 ...
- [LeetCode] Range Sum Query - Immutable 区域和检索 - 不可变
Given an integer array nums, find the sum of the elements between indices i and j (i ≤ j), inclusive ...
- 如何理解 卷积 和pooling
转自:http://blog.csdn.net/malefactor/article/details/51078135 CNN是目前自然语言处理中和RNN并驾齐驱的两种最常见的深度学习模型.图1展示了 ...