期望DP

本题递推比较麻烦,可以记忆化搜索

注意搜索的边界条件

以及每一次转移

#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <cstring>
using namespace std;
double dp[16][16][16][16][6][6];
bool f[16][16][16][16][6][6];
int term[4];
double dfs(int a, int b, int c, int d, int p, int q) {
if(f[a][b][c][d][p][q]) return dp[a][b][c][d][p][q];
f[a][b][c][d][p][q] = 1;
double & ans = dp[a][b][c][d][p][q];ans = 0.0;
int r1 = a, r2 = b, r3 = c, r4 = d;
if(p == 1) r1++; if(p == 2) r2++; if(p == 3) r3++; if(p == 4) r4++;
if(q == 1) r1++; if(q == 2) r2++; if(q == 3) r3++; if(q == 4) r4++;
if(r1 >= term[0] && r2 >= term[1] && r3 >= term[2] && r4 >= term[3]) return ans = 0;
int sum = 54 - r1 - r2 - r3 - r4;
if(sum <= 0) return ans = 1e10;
if(a < 13) ans += dfs(a + 1, b, c, d, p, q) * (13 - a) /sum;
if(b < 13) ans += dfs(a, b + 1, c, d, p, q) * (13 - b) /sum;
if(c < 13) ans += dfs(a, b, c + 1, d, p, q) * (13 - c) /sum;
if(d < 13) ans += dfs(a, b, c, d + 1, p, q) * (13 - d) /sum;
if(!p) {
double tmp = dfs(a, b, c, d, 1, q);
tmp = min(tmp, dfs(a, b, c, d, 2, q));
tmp = min(tmp, dfs(a, b, c, d, 3, q));
tmp = min(tmp, dfs(a, b, c, d, 4, q));
ans += tmp / sum;
}
if(!q) {
double tmp = dfs(a, b, c, d, p, 1);
tmp = min(tmp, dfs(a, b, c, d, p, 2));
tmp = min(tmp, dfs(a, b, c, d, p, 3));
tmp = min(tmp, dfs(a, b, c, d, p, 4));
ans += tmp / sum;
}
ans += 1.0;//概率和是 1 ,所以我们直接加 1 即可
return ans;
}
int main() {
for(int i = 0; i < 4; i++) cin >> term[i];
double ans = dfs(0, 0, 0, 0, 0, 0);
if(ans >= 100.0) printf("-1.000\n");
else printf("%.3f\n", ans);
return 0;
}

tyvj 2002 扑克牌的更多相关文章

  1. TYVJ 2002 扑克牌 题解

    P2002 扑克牌 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 Admin生日那天,Rainbow来找Admin玩扑克牌……玩着玩着Rainbow觉得太没 ...

  2. TYVJ P2002 扑克牌

    背景 Admin生日那天,Rainbow来找Admin玩扑克牌……玩着玩着Rainbow觉得太没意思了,于是决定给Admin一个考验~~~ 描述 Rainbow把一副扑克牌(54张)随机洗开,倒扣着放 ...

  3. SCNU 2015ACM新生赛初赛【1007. ZLM的扑克牌】解题报告

            题目链接详见SCNU 2015新生网络赛 1007. ZLM的扑克牌 .         其实我在想这题的时候,还想过要不要设置求最小的排列,并且对于回文数字的话,可以把扑克牌折起来( ...

  4. BZOJ 2002: [Hnoi2010]Bounce 弹飞绵羊

    2002: [Hnoi2010]Bounce 弹飞绵羊 Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 9071  Solved: 4652[Submi ...

  5. [BZOJ3223]Tyvj 1729 文艺平衡树

    [BZOJ3223]Tyvj 1729 文艺平衡树 试题描述 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1,翻转区 ...

  6. [BZOJ3224]Tyvj 1728 普通平衡树

    [BZOJ3224]Tyvj 1728 普通平衡树 试题描述 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作:1. 插入x数2. 删除x数(若有多个相同的数,因只删除一个) ...

  7. ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

    有时候,当我们使用"mysql"."mysqladmin"."mysqldump"等命令管理数据库时,服务器抛出类似如下错误: 一.错误现场 ...

  8. Java 用LinkdeList实现52张扑克牌

    用LinkdeList实现52张扑克牌(不含大小王)的洗牌功能.提示:花色 ,和数字分别用数组存储. import java.util.LinkedList; import java.util.Ran ...

  9. C算法编程题(一)扑克牌发牌

    前言 上周写<我的编程开始(C)>这篇文章的时候,说过有时间的话会写些算法编程的题目,可能是这两天周末过的太舒适了,忘记写了.下班了,还没回去,闲来无事就写下吧. 因为写C++的编程题和其 ...

随机推荐

  1. 完整的.h宏定义

    ##封装中的要点 __declspec(dllexport) 表明函数为导出函数 * `extern "C"` 导出的函数名与声明一致,否则导出函数名无法正常使用 当然,也可以通过 ...

  2. 机器学习十大常用算法(CITE 不会停的蜗牛 ) interesting

    算法如下: 决策树 随机森林算法 逻辑回归 SVM 朴素贝叶斯 K最近邻算法 K均值算法 Adaboost 算法 神经网络 马尔可夫 1. 决策树 根据一些 feature 进行分类,每个节点提一个问 ...

  3. B. Anatoly and Cockroaches

    B. Anatoly and Cockroaches time limit per test 1 second memory limit per test 256 megabytes input st ...

  4. SEO 优化

    1.什么是SEO优化: 简单的来说就是了解搜索引擎的排名规则,投机所好,让我们的网站在搜索引擎上得到靠前的排名,获取更多流量的一种方式. 2.SEO优化-衡量标准 关键词的排名--核心关键词的效果 收 ...

  5. DeepFaceLab小白入门(4):提取人脸图片!

    通过上面级片文章,你应该基本知道了换脸的流出,也能换出一个视频来.此时,你可能会产生好多疑问,比如每个环节点点到底是什么意思,那些黑漆漆屏幕输出的又是什么内容,我换脸效果这么差,该如何提升?等等,好奇 ...

  6. 一键生成属于自己的QQ历史报告,看看你对自己的QQ了解程度有多深?

    目录 一键生成属于自己的QQ历史报告,看看你对自己的QQ了解程度有多深? 简介 功能截图 如何运行 编写思路 main.py模块 qq_bot模块 tkinter_gui模块 static_data模 ...

  7. OpenCV中图像的读取,显示与保存

      图像的读取,显示与保存 相关函数:cv2.imread().cv2.imshow().cv2.imwrite() 1.读入图像: 用cv2.imread()函数来读取图像,cv2.imread(路 ...

  8. nrf51822微信开发入门学习笔记1:开始前的准备

    参考:(id:love--baby)https://blog.csdn.net/hunhun1122/article/details/68922493 微信硬件平台:https://iot.weixi ...

  9. hdu 6333

    Problem Description There are n apples on a tree, numbered from 1 to n.Count the number of ways to p ...

  10. 制作iso文件

     genisoimage -o fusionstor-yi-2017-03-08.iso(镜像名称) -v -cache-inodes -joliet-long -R -J -T -V ZS  -c  ...