UVA 1637 Double Patience】的更多相关文章

链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4512 题意: 36张牌分成9堆,每堆4张牌.每次可以拿走某两堆顶部的牌,但需要点数相同.如果有多种拿法则等概率的随机拿.例如,9堆顶部的牌分别为KS, KH, KD, 9H, 8S, 8D, 7C, 7D, 6H,则有5种拿法(KS,KH), (KS,KD), (KH,KD), (…
题意:36张扑克,平分成9摞,两张数字一样的可以拿走,每次随机拿两张,问能拿光的概率. 解法:记忆化搜索,状态压缩.一开始我想在还没拿的时候概率是1,然后往全拿光推···样例过不去···后来觉得推反了,改成了深搜,模拟拿牌的过程,九摞牌的状态用9位五进制表示. 代码: #include<stdio.h> #include<iostream> #include<algorithm> #include<string> #include<string.h&g…
Double Patience Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 694   Accepted: 368 Case Time Limit: 1000MS   Special Judge Description Double Patience is a single player game played with a standard 36-card deck. The cards are shuffled a…
题意: 一共有9堆牌,每堆牌四张.每次可以取堆顶点数相同的两张牌,如果有多种方案则选取是随机的. 如果最后将所有牌取完,则视为游戏胜利,求胜利的概率. 分析: 用一个九元组表示状态,分别代表每堆牌剩余的牌数.根据全概率公式,d[i]为后继状态成功概率的平均值. #include <iostream> #include <cstdio> #include <map> #include <vector> using namespace std; map<v…
题链: http://poj.org/problem?id=2794题解: 状压DP,概率 9元组表示每一堆还剩几张牌.可以用5进制状压,共5^9=1953124个状态. 令P(S)表示S这个状态被取完的概率. 假设当前状态为S,可以有三种取法,分别对应转移到_S1,_S2,_S3三个更小的状态. 那么由全概率公式: 如果_S1状态为前提条件,那么S就有1/3的概率转移到_S1 同理_S2,_S3.所以得出: P(S)=P(S|_S1)*P(_S1)+P(S|_S2)*P(_S2)+P(S|_S…
https://vjudge.net/problem/UVA-1637 题意: 36张牌分成9堆,每堆4张牌.每次可以拿走某两堆顶部的牌,但需要点数相同.每种拿法的概率均为1/5.求成功概率. 思路: 可以用9元组来表示当前状态,d[i]表示状态i对应的成功概率. 根据全概率公式:一个状态的成功率,等于其后继状态的成功率的平均值. 看到别人用vector来简洁的表示了状态,值得学习. vector(int nSize,const t& t):创建一个vector,元素个数为nSize,且值均为t…
Description  ``Accordian'' Patience  You are to simulate the playing of games of ``Accordian'' patience, the rules for which are as follows: Deal cards one by one in a row from left to right, not overlapping. Whenever the card matches its immediate n…
题目:Clock Patience游戏,将52张扑克牌,按时钟依次分成13组(中心一组),每组4张全都背面向上, 从中间组最上面一张牌開始.翻过来设为当前值,然后取当前值相应组中最上面的背过去的牌翻过来. 取这个值为新的当前值,直到不能翻拍游戏结束.求结束时.翻过来的拍数以及最后翻过来的牌: 假设没看明确题目详细规则,百度玩一下就明确了. 分析:模拟,数据结构(DS).设计13个栈,模拟就可以. 说明:注意题目给的牌的顺序是逆序的,╮(╯▽╰)╭. #include <algorithm> #…
以9元组来代表当前状态,每一元是每一堆剩下的牌数 枚举当前状态所有可以拿掉牌的情况,然后递归下去求 概率,当牌拿完的时候概率为1 那么这里的实现非常的秀,用到了vector来代表9元组 然后还用到了map来实现记忆化搜索 #include<cstdio> #include<vector> #include<map> #define REP(i, a, b) for(int i = (a); i < (b); i++) using namespace std; ch…
Double Shortest PathsAlice and Bob are walking in an ancient maze with a lot of caves and one-way passages connectingthem. They want to go from cave 1 to cave n. All the passages are difficult to pass. Passages are toosmall for two people to walk thr…