Black Jack

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5602

记忆化搜索

用dp[0][i][j]记录当player为i,banker为j时player赢的概率;dp[1][i][j]记录当player为i,banker为j时banker输或平局的概率。

显然,player当前的决策只有两种:1.continue继续拿牌;2.turn to banker让庄家拿牌.

故dp[0][i][j]=max(继续拿牌玩家赢的概率,让庄家拿牌庄家输或平局的概率);

而继续拿牌玩家赢的概率=1/13*dp[0][i+1...i+9][j]+4/13*dp[0][i+10][j],

让庄家拿牌庄家输或平局的概率=1/13*dp[1][i][j+1...j+9]+4/13*dp[1][i][j+10].

值得注意的是,玩家和庄家拿牌的策略有所不同:庄家只要当前牌数比玩家大或相等,庄家即可不再拿牌.

不说了,要落泪了,回去补复变了。

代码如下:

 #include<cstdio>
#include<cstring>
#define Max(x,y) (x>y?x:y)
using namespace std;
int T,play,bank;
char s[];
double dp[][][],flag;//0.player win's gay 1.banker lose's gay
bool mark[][][];
int hs(char c){
if(c=='A')return ;
else if(''<=c&&c<='')return c-'';
return ;
}
void init(){
scanf("%s",s);
play=hs(s[])+hs(s[]);
bank=hs(s[])+hs(s[]);
}
double dfsForBank(int p,int b){
if(b>)return 1.0;
if(b>=p)return 0.0;
if(mark[][p][b])return dp[][p][b];
mark[][p][b]=;
for(int i=;i<=;++i){
if(i!=)dp[][p][b]+=1.0/*dfsForBank(p,b+i);
else dp[][p][b]+=4.0/*dfsForBank(p,b+i);
}
return dp[][p][b];
}
double dfsForPlay(int p,int b){
if(p>)return 0.0;
if(mark[][p][b])return dp[][p][b];
mark[][p][b]=;
double turnOver=dfsForBank(p,b);//turn to banker
for(int i=;i<=;++i){//continue
if(i!=)dp[][p][b]+=1.0/*dfsForPlay(p+i,b);
else dp[][p][b]+=4.0/*dfsForPlay(p+i,b);
}
dp[][p][b]=Max(dp[][p][b],turnOver);
return dp[][p][b];
}
int main(void){
scanf("%d",&T);
while(T--){
init();
flag=dfsForPlay(play,bank);
if(flag>0.5)printf("YES\n");
else printf("NO\n");
}
}

Black Jack的更多相关文章

  1. 解决:编译CM14.1 提示Jack “Out of memory error”错误

    Android 7.1编译到33%时出现JDK内存溢出的错误: Out of memory error (version f95d7bdecfceb327f9d201a1348397ed8a84384 ...

  2. 解决:ERROR: Cannot launch Jack server

    问题重现: Install: /home/dinphy/sm/out/target/product/ido/system/lib/libdl.so java -Xmx3500m -jar /home/ ...

  3. jack报错

    [ 29% 17593/59326] Ensure Jack server is installed and startedFAILED: /bin/bash -c "(prebuilts/ ...

  4. 耳机jack构造及在应用时可能出现的问题

    目前市场上耳机分为4环耳机(图1所示,iphone型)和3环耳机(图2所示).4环耳机称为headset,3环耳机称为headphone,两者之间的区别就是4环耳机比3环耳机多个micphone.而J ...

  5. poj1127 Jack Straws(线段相交+并查集)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud Jack Straws Time Limit: 1000MS   Memory L ...

  6. 【屌丝程序的口才逆袭演讲稿50篇】第十篇:程序猿们请看看外面的世界吧【张振华.Jack】

    演讲稿主题:<程序猿们请看看外面的世界吧>                      --作者:张振华Jack     大家都知道我是一个程序猿.几年下来认识了最典型的三个程序猿.     ...

  7. 1840: Jack Straws

    1840: Jack Straws 时间限制(普通/Java):1000MS/10000MS     内存限制:65536KByte 总提交: 168            测试通过:129 描述 I ...

  8. com.android.jack.CommandLine: Internal compiler error

    Android studio编译的时候出现错误: SEVERE: com.android.jack.CommandLine: Internal compiler error Error:Executi ...

  9. HP Jack介绍

    转载:https://www.cnblogs.com/Peter-Chen/p/3999212.html 目前市场上耳机分为4环耳机(图1所示,iphone型)和3环耳机(图2所示).4环耳机称为he ...

随机推荐

  1. elike.python.function()

    将python用于基本的科学计算,能完全替代matlab.就最近写的一个物理模型程序来看,用python建立的物理模型的可控性,代码的层次性都优于matlab,只不过python没有matlab那样的 ...

  2. centos jdk 安装

    1)下载JDK 1.7(1.7.0_25) 下载地址为: http://www.Oracle.com/technetwork/java/javase/downloads/jdk7-downloads- ...

  3. python简易爬虫实现

    目的:爬取昵称 目标网站:糗事百科 依赖的库文件:request.sys.beautifulSoup4.imp.io Python使用版本:3.4 说明:参考http://cn.python-requ ...

  4. c#:readonly与const的区别

    readonly与const的区别: 1.初始化:const  字段只能在该字段的声明中初始化. readonly  字段可以在声明或构造函数中初始化. 2.值: const 字段是编译时常量(con ...

  5. sql时间转换函数--备忘

    总是忘记 一.语法: CAST (expression AS data_type) 参数说明: expression:任何有效的SQServer表达式. AS:用于分隔两个参数,在AS之前的是要处理的 ...

  6. 【IE6的疯狂之八】链接伪类(:hover)CSS背景图片有闪动BUG

    IE6下链接伪类(:hover)CSS背景图片有闪动BUG,主要原因ie会再一次请求这张图片,或者说图片没被缓存. 例如: CSS代码 a:hover{background:url(imagepath ...

  7. 使用Jax-rs 开发RESTfull API 入门

    使用Jax-rs 开发RESTfull API 入门 本文使用 Jersey 2开发RESTfull API.Jersey 2 是 JAX-RS 接口的参考实现 使用到的工具 Eclipse Neon ...

  8. CodeForces 711C Coloring Trees

    简单$dp$. $dp[i][j][k]$表示:前$i$个位置染完色,第$i$个位置染的是$j$这种颜色,前$i$个位置分成了$k$组的最小花费.总复杂度$O({n^4})$. #pragma com ...

  9. Base64encode

    一直以来Base64的加密解密都是使用sun.misc包下的BASE64Encoder及BASE64Decoder的sun.misc.BASE64Encoder/BASE64Decoder类.这个类是 ...

  10. 第1章 PHP快速入门

    1.最好使用<?php   ?> 即XML风格的PHP标记: 2.echo语句:将传递给其自身的字符串打印到浏览器: 3.注释:①C风格的多行注释/*  */ ②C++风格的单行注释// ...