/*
参加赌博,赌 M 次 ,每次都有 P 的概率下注金翻倍 ,(1-P)的概率输掉下注金
每次可以下注任何数量的金币
一开始有金币 x 个,问最后能带1000 000 个以上回家的概率
//
分析:对于赌博,因为每次都能下注的金币是无限种可能的,所以,要将无限化有限(化连续为离散)
对于最后一次赌博:
1.  本金>= 1000 000   概率为1(直接就走了)
2.  本金>=5000 00     概率为P(赢了有,输了没)
3.  本金<5000 00     概率为0  (不管输赢都没有1000 000) 最后两轮:
1.本金  >=1000 000   概率为1
2. 本金 >=7500 00    概率为:P*P(两次都输才会输2500 00+5000 00)
3. 本金 >=5000 00    概率为:P(赢一次直接走,输了必定不可能到1000 000)
4. 本金 >=2500 00    概率为:(1-P)*(1-P)必须两次都赢
5. 本金 <2500 00     概率为:0   别想了
. . . .
. . . .
某个范围内,即使所持的钱数不同,最后可以带钱回家的概率也是相同的 M轮 考虑 2^M+1 种情况  */double dp[2][1000005];//滚动数组
void solve()
{int input(M,X);double input(P);int n=1<<M;//n=2^M double *prv=dp[0],*nxt=dp[1];clean(dp,0);prv[n]=1.0;//第一行末尾 1.0 for(int r=0;r<M;++r)//M次赌博 {for(int i=0;i<=n;++i)// n个状态 {int jub=min(i,n-i);double t=0.0;for(int j=0;j<=jub;++j)//比较 0 ~ min(i,n-i) t=max(t,P*prv[i+j]+(1-P*prv[i-j]));nxt[i]=t;}swap(prv,nxt);//滚动数组 }int i=ll(X*n)/1000000;printf("%.6lf\n",prv[i]);
}

Millionaire(2008 APAC local onsites C)(连续 离散化)相关推荐

  1. Millionaire(2008 APAC local onsites c) 概率dp

    题意:最开始你有x元钱,要进行M轮赌博.每一轮赢的概率为P,你可以选择赌与不赌,如果赌也可以将所持的任意一部分钱作为赌注(可以是整数,也可以是小数).如果赢了,赌注将翻倍:输了赌注则没了.在M轮赌博结 ...

  2. Millionaire (2008 APAC local onsites C)

    题目可以在网上找. 很多博文上来就放代码,或者大致说一下思路,让人看着很费解,不理解代码里的变量到底是什么含义. 先把书上的讲解贴上来. 接下来,说明代码中变量的含义. (1)for(int r=0; ...

  3. GCJ 2008 APAC local onsites C Millionaire

    /* 非常值得重新重做的概率题,化连续为离散,分为(2^M +1)个区间,double型的赌注,则用该区间内的int型来代替,反正效果一样(最终得到的概率是相等的)等到要输出prv[i]时,再去找在d ...

  4. DP——2008 APAC local onsites C Millionaire

    题目链接: https://codejam.withgoogle.com/codejam/contest/32005/dashboard#s=p2 题意:在一个赌博游戏中,初始有X元,总共玩M轮,每次 ...

  5. GCJ2008 APAC local onsites C Millionaire

    自己Blog的第一篇文章,嗯... 接触这道题,是从<挑战程序设计竞赛>这本书看来的,其实头一遍读题解,并没有懂.当然现在已经理解了,想想当初可能是因为考虑两轮的那张概率图的问题.于是决定 ...

  6. Millionaire 2008APAC local onsites C

    /*Millionaire 2008APAC local onsites C 题意:最开始你有X元钱,要进行M轮赌博. 每一轮赢的概率为P,你可以选择赌与不赌, 如果赌也可以将所持的任意一部分钱作为赌 ...

  7. 数据科学和数学建模_数据科学与国际象棋心理建模重叠

    数据科学和数学建模 Chess and data science have a lot in common. Some seemingly surface-level parallels includ ...

  8. 挑战程序设计 Millionaire

    Millionaire (2008 APAC local onsites C) 假设游戏开始时,你有X元钱,可进行M轮竞猜.每一轮可以将所持的任意 一部分钱作为赌注,赌注不光是整数,也可以是小数.一分 ...

  9. 【Google Code Jam】Millionaire

    题目描述 Google Code Jam 2008APAC local onsites C 最开始你有X元钱,要进行M轮赌博.每一轮赢的概率为P,你可以选择赌与不赌,如果赌也可以将所持的任意一部分钱作 ...

最新文章

  1. form表单会跨域_前端跨域So Easy
  2. 关于Linux下进程创建的相关知识
  3. C# vs C++ 全局照明渲染性能比试
  4. 当一个程序员真正掌握算法之后,会变得有多强...
  5. MySQL性能分析及explain的使用
  6. 六、利用frp穿透连接内网的linx系统和windows系统
  7. WPF 用 DataTemplate 合并DataGrid列表列头类似报表设计及行头列头样式 - 学习
  8. C#导入导出.CSV文件
  9. 虽然你没有考入清华大学,但是如果你有对于计算机的向往!!!请看过来
  10. 工作109:路由菜单项
  11. Kotlin从入门到放弃(三)——协程
  12. 人工势场法--路径规划--原理--matlab代码
  13. java sybase数据库连接_在JAVA中连接Sybase数据库(例子)
  14. MC9S12相关模块
  15. 手机自带浏览器的强大
  16. mysql SELECT/UPDATE command denied to user 'root'@'localhost' for table 'XXX' 报错1142处理
  17. 快捷键切换(Linux)
  18. android 上午零点格式,Android零点一度的区别——Matrix
  19. 从“时间机器”备份恢复 Mac
  20. 自适应云呼HTML官网源码

热门文章

  1. 七、BIRT分组报表
  2. Windows Phone在美占有率将在11月超越黑莓
  3. Java8新特性——Optional容器类的简单应用
  4. 【WUT】PTA 2022春-MOOC-练习题
  5. js 值引用和地址引用
  6. RDD Transformation —— sample
  7. could only be replicated to 0 nodes instead of minReplication (=1). There are 1 datanode(s) running
  8. Camunda流程驳回至上一节点
  9. C++运算符重载实现矩阵除法
  10. background可以同时使用图片和背景色