TYVJ 2002 扑克牌 题解
背景
玩着玩着Rainbow觉得太没意思了,于是决定给Admin一个考验~~~
描述
Rainbow想问问Admin,得到A张黑桃、B张红桃、C张梅花、D张方块需要翻开的牌的张数的期望值E是多少?
特殊地,如果翻开的牌是大王或者小王,Admin将会把它作为某种花色的牌放入对应堆中,使得放入之后E的值尽可能小。
由于Admin和Rainbow还在玩扑克,所以这个程序就交给你来写了~
输入格式
输出格式
如果不可能达到输入的状态,输出-1.000。
测试样例1
输入
样例输入1
1 2 3 4样例输入2
15 15 15 15
输出
样例输出1
16.393样例输出2
-1.000
备注
对于100%的数据,0<=A,B,C,D<=15
lydrainbowcat - "Admin生日"杯NOIP模拟赛 第三题
————————————————————我是分割线————————————————————————
好题。
数学期望DP
用记忆化搜索实现。
数组竟然六维,可怕......
1 #include <cstdio> 2 #include <cstring> 3 #include <cmath> 4 #include<iomanip> 5 #include <algorithm> 6 #include <iostream> 7 using namespace std; 8 double dp[15][15][15][15][5][5]; 9 bool vis[15][15][15][15][5][5]; 10 int t[4]; 11 double dfs(int a,int b,int c,int d,int e,int f) 12 { 13 if (vis[a][b][c][d][e][f]) return dp[a][b][c][d][e][f]; 14 if (((a+(e==0)+(f==0))>=t[0])&&((b+(e==1)+(f==1))>=t[1])&&((c+(e==2)+(f==2))>=t[2])&&((d+(e==3)+(f==3))>=t[3])) return dp[a][b][c][d][e][f]=0.0; 15 int sum=a+b+c+d+(e!=4)+(f!=4); 16 double F=1; 17 if (a<13) F+=dfs(a+1,b,c,d,e,f)*(13-a)/(54-sum); 18 if (b<13) F+=dfs(a,b+1,c,d,e,f)*(13-b)/(54-sum); 19 if (c<13) F+=dfs(a,b,c+1,d,e,f)*(13-c)/(54-sum); 20 if (d<13) F+=dfs(a,b,c,d+1,e,f)*(13-d)/(54-sum); 21 double md=100; if (e==4) {for (int i=0;i<4;++i) md=min(dfs(a,b,c,d,i,f)/(54-sum),md); F+=md;} 22 md=100; if (f==4) {for (int i=0;i<4;++i) md=min(dfs(a,b,c,d,e,i)/(54-sum),md); F+=md;} 23 vis[a][b][c][d][e][f]=true; 24 return dp[a][b][c][d][e][f]=F; 25 } 26 int main() 27 { 28 memset(vis,false,sizeof vis); 29 int a,b,c,d; 30 scanf("%d%d%d%d",&t[0],&t[1],&t[2],&t[3]); 31 a=t[0];b=t[1];c=t[2];d=t[3]; 32 double ans=dfs(0,0,0,0,4,4); 33 if (ans>54.0) printf("-1.000\n"); 34 else cout<<setiosflags(ios::fixed)<<setprecision(3)<<ans; 35 }
tyvj 2002
转载于:https://www.cnblogs.com/SBSOI/p/5636538.html
TYVJ 2002 扑克牌 题解相关推荐
- tyvj 2002 扑克牌
期望DP 本题递推比较麻烦,可以记忆化搜索 注意搜索的边界条件 以及每一次转移 #include <iostream> #include <cstdio> #include & ...
- Tyvj P1048 田忌赛马 题解
像我这种蒟蒻就非常适合做一些辣鸡题,比如一些简单的贪心题,今天偶遇田忌赛马,于是我就非常轻(费)松(力)地搞定了这道题. 题目: 时间: 1000ms / 空间: 131072KiB 描述 中国古代的 ...
- noip2002提高组题解
再次280滚粗.今天早上有点事情,所以做题的时候一直心不在焉,应该是三天以来状态最差的一次,所以这个分数也还算满意了.状态真的太重要了. 第一题:均分纸牌 贪心.(昨天看BYVoid的noip2001 ...
- 牛客题霸 [扑克牌顺子] C++题解/答案
管理博文 牛客题霸 [扑克牌顺子] C++题解/答案 题目描述 LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张_)-他随机从中抽出了5张牌,想测测自己 ...
- 0x30数学知识(0x38 概率与数学期望)例题3:扑克牌(题解)
题意 题目链接 [题意] Admin生日那天,Rainbow来找Admin玩扑克牌.玩着玩着Rainbow觉得太没意思了,于是决定给Admin一个考验. Rainbow把一副扑克牌(54张)随机洗开, ...
- bzoj3224 Tyvj 1728 普通平衡树题解--Treap
题面: Description您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作: 1. 插入x数 2. 删除x数(若有多个相同的数,因只删除一个) 3. 查询x数的排名(若有 ...
- tyvj 2075 借教室 题解
P2075 [NOIP2012T5]借教室 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 noip2012-tg 描述 在大学期间,经常需要租借教室.大到院 ...
- SHOI 2002 百事世界杯之旅 题解
题目传送门 题目大意: 有 nnn 种物品,每次随机拿一种,问期望拿几次能拿齐所有种类. 题解 跟这题一样的,甚至还要简单一些qwq,就是多了个分数. 代码如下: #include <cstdi ...
- AHOI 2002 黑白瓷砖 题解
题目传送门 题目大意: 有 n(n+1)2\frac {n(n+1)} 22n(n+1) 个六边形瓷砖,第一层有 111 个,第二层有 222 个,以此类推组成一个三角形,给每块瓷砖染黑色或白色,两 ...
最新文章
- .net里鼠标选中的text数据怎么获取_Python数据科学实践 | 爬虫1
- iptables使用ipt_connlimit限制连接数
- boost库之tcp client 回调不正常
- 大厂python面试题_BAT大厂Python面试题精选,看完后离拿到offer只有一步之遥(含答案)...
- cdr怎么转换成psd转换为位图标准_动漫角色转换真人,飞屋环游记中的小罗竟酷似他……...
- sql语句换行_Spark随笔|关于Bucket Table与SQL语句转换
- 说说基于网络的五种IO模型
- c语言结构体实现存储信息,用C语言结构体实现通讯录
- Qt的QThread多线程使用
- StringUtil.isEmpty()和StringUtil.isBlank()的区别
- 自定义bt服务器,[教程]Aria2自动更新BT Tracker服务器列表的方法
- 4r照片尺寸是多大_4r照片尺寸(正常照片是5寸还是6寸)
- 小区物业专属公众号管理办法
- 保研之路——哈深计算机预推免
- 苹果iWork,看上去很美
- 建筑计算机综合应用能力实训,计算机综合应用能力实训.doc
- NiFi 的使用心得
- matlab怎么加采样开关,开关量采集模块怎么使用?
- ZYNQ RFSoc开发板-usrp软件无线电X410mini开发板-5G评估板
- 在OpenCV里实现二维离散卷积1
热门文章
- 人脸识别躲不过一张3D面具,安全风险到底有多大?
- Tensorflow的基本运行方式--demo程序
- 讲个笑话,李彦宏可能会被选为两院院士
- 关于数据集 使用PutCollect后m_Recordset-Update();数据集更新报错的问题
- php过滤手机特殊字符,php过滤特殊字符实用函数
- gis属性表怎么导成excel_第022篇:ArcGIS中将属性表直接导出为Excel的方法
- 03_属性别名映射的配置
- 为什么java可跨平台执行,java为什么可以跨平台执行
- lda 可以处理中文_LDA数学八卦索引及全文文档
- mysql 分组占比_含泪整理MySQL索引