Gym 101606 F-Flipping Coins(概率dp)
参考博客:http://www.cnblogs.com/kang000/p/8571071.html (这篇博客写的真的走心,ORZ)
题意
有n个硬币排成一排,开始的时候所有的硬币都是正面朝下,你必须要扔K次硬币,每次选择一个硬币,如果你采取最优策略,K次以后朝上的硬币数的最大期望是多少?
分析
一脸懵逼两脸懵逼三脸懵逼···
--------------------------------------------------------------------------
随机变量X是指朝上的硬币数,当有N枚硬币的时候,X=0,1,2,3....N
E(X)=1*p(1)+2*p(2)+....+n*p(n)。
要想求最大期望,我们在扔硬币的时候要遵循一个策略:尽量扔正面朝下的硬币
如果当前有0到n-1枚硬币正面朝上,我们可以选择正面朝下的硬币来扔,扔完以后朝上硬币数不变或者+1
如果当前有n枚硬币正面朝上,我们只能选择正面朝上的硬币来扔,扔完以后朝上的硬币数不变或者-1
-----------------------------------------------------------------------------------------------
令dp[i][j]为扔i次以后j枚硬币朝上的概率
根据上面总结的规律,我们可以的到状态转移方程
当j<n的时候
dp[i+1][j]+=dp[i][j]*0.5
dp[i+1][j+1]+=dp[i][j]*0.5
当j=n的时候
dp[i+1][j+1]+=dp[i][j]*0.5
dp[i+1][j-1]+=dp[i][j]*0.5
这样递推出概率来以后遍历一遍j求期望就好了~
1 #include <cstdio> 2 #include <cstring> 3 #include <iostream> 4 #include <algorithm> 5 6 using namespace std; 7 const int maxn=500; 8 double dp[maxn][maxn]; 9 int n,k; 10 int main(){ 11 scanf("%d%d",&n,&k); 12 memset(dp,0,sizeof(dp)); 13 dp[0][0]=1; 14 15 for(int i=0;i<k;i++){ 16 for(int j=0;j<=n;j++){ 17 if(j<n){ 18 dp[i+1][j]+=0.5*dp[i][j]; 19 dp[i+1][j+1]+=0.5*dp[i][j]; 20 } 21 if(j==n){ 22 dp[i+1][j]+=0.5*dp[i][j]; 23 dp[i+1][j-1]+=0.5*dp[i][j]; 24 } 25 } 26 } 27 /*for(int i=0;i<=k;i++){ 28 for(int j=0;j<=n;j++){ 29 printf("%d %d %f\n",i,j,dp[i][j]); 30 } 31 }*/ 32 double ans=0; 33 for(int i=1;i<=n;i++){ 34 ans+=dp[k][i]*i; 35 } 36 printf("%.6f",ans); 37 38 return 0; 39 }
View Code
转载于:https://www.cnblogs.com/LQLlulu/p/8886855.html
Gym 101606 F-Flipping Coins(概率dp)相关推荐
- Collecting Bugs POJ - 2096(基础概率dp+期望模板)
题意: 有s个系统,n种bug,小明每天找出一个bug,可能是任意一个系统的,可能是任意一种bug,即是某一系统的bug概率是1/s,是某一种bug概率是1/n. 求他找到s个系统的bug,n种bug ...
- 动态规划报告(树形DP+概率DP
动态规划报告 树形dp 树形 DP,即在树上进行的 DP.由于树固有的递归性质,树形 DP 一般都是递归进行的.一般需要在遍历树的同时维护所需的信息 以一道题目为例 2022CCPC桂林站G Grou ...
- 2018.09.01 poj3071Football(概率dp+二进制找规律)
传送门 概率dp简单题. 设f[i][j]表示前i轮j获胜的概率. 如果j,k能够刚好在第i轮相遇,找规律可以发现j,k满足: (j−1)>>(i−1)(j−1)>>(i−1) ...
- Discovering Gold LightOJ - 1030[概率dp或者记忆化搜索]
题目大意:有一个[1,n][1,n][1,n]的数轴,数轴上的每个对应位置上都有金矿,你初始位置是1,然后你每次都会投色子决定你下一步跳到哪里,如果你跳出了nnn,那么你就要重新投.问你跳到nnn的时 ...
- 【原创】概率DP总结 by kuangbin
概率DP主要用于求解期望.概率等题目. 转移方程有时候比较灵活. 一般求概率是正推,求期望是逆推.通过题目可以体会到这点. 首先先推荐几篇参考的论文: <信息学竞赛中概率问题求解初探> & ...
- BZOJ3029守卫者的挑战(概率dp)
题目大意:给定n个事件,第i个事件发生的概率为pi,收益为ai,初始收益为k,求n个事件之后发生的事件数>=l且收益>=0的概率 收益只可能是正整数或-1. Solution dp[i][ ...
- 【概率DP】$P2059$ 卡牌游戏
[概率DP]P2059 卡牌游戏 链接 题目描述 N个人坐成一圈玩游戏.一开始我们把所有玩家按顺时针从1到N编号.首先第一回合是玩家1作为庄家.每个回合庄家都会随机(即按相等的概率)从卡牌堆里选择一张 ...
- 【2019icpc徐州站】Random Access Iterator(概率dp,有坑,tricks)
题干: Recently Kumiko learns to use containers in C++ standard template library. She likes to use the ...
- 【CodeForces - 518D】Ilya and Escalator(概率dp,数学期望)
题干: Ilya got tired of sports programming, left university and got a job in the subway. He was given ...
最新文章
- Linux Shell 命令--awk
- if test project can't be opened in devenv
- MYSQL 5.7 主从复制 -----GTID说明与限制 原创
- 非阻塞connect的实现
- 【转载】Spring @Async 源码解读。
- Table 'barfoo_datacenter_config.parttemplates' doesn't exist------Mysql
- componentsJoinedByString 和 componentsSeparatedByString 的方法的区别
- Java中的线程本地存储
- 前端学习(2355):uni里面的样式学习
- 生成网上下载的EF项目对应的数据库
- Go语言 通过文件流判断文件头来识别文件类型
- 三菱plc pwm指令_三菱PLC常用指令汇总,含用法与注释
- tomcat设置一级域名、二级域名访问指定项目
- 新起典|《奇妙·夜德天蚂拐节》定终身场景多媒体内容升级项目
- 【转】常用邮箱的 IMAP/POP3/SMTP 设置
- C++async、future、packaged_task、promise的使用
- 微信多开软件苹果版_快手充值快币微信充值苹果版;
- 编译可在Android上运行的qemu
- C#小工具 ---- 压缩图片并指定图片大小
- 带SN切换流程_抖音频繁切换账号会限流吗?抖音频繁切换账号会降权吗?
热门文章
- 阿里资深技术专家:在各阶段中,3年经验的程序员应具备哪些技术能力(进阶必看)...
- (19)C++项目练习二----------【音乐播放器】
- 【最小费用最大流】N. April Fools' Problem (medium)
- JMeter处理jdbc请求后的响应结果
- 关系数据库范式粗略理解
- (积累)java里的套接字
- .NET 关于Geometry转GeoJson
- 两个有序数组合成一个有序数组
- [BZOJ1724][Usaco2006 Nov]Fence Repair 切割木板
- bzoj1007题解