hdu4870Rating 概率dp
来源:互联网 发布:站长之家端口检测工具 编辑:程序博客网 时间:2024/06/18 18:02
//两个账号 , 每次选rating小的去比赛 //每次比赛rating可能加50 , 可能减100(最多剪到0) //问刚开始两个比赛的rating都为0 到其中一个账号大于1000的期望//只考虑一个账号情况 ,// dp[0] = p*dp[1] + (1-p)dp[0] + 1 <==> dp[0] = dp[1] + 1/p// dp[1] = p*dp[2] + (1-p)dp[0] + 1 <==> dp[2] = dp[1] + 1/(p*p) = dp[0] + 1/p + 1/(p*p)// 设 dp[k] = dp[0] + t[k] t[k]表示从0到k的期望值// dp[k] = p*dp[k+1] + (1-p)dp[k-2] + 1 ;//所以 t[k+1]=1/p+1/p*t[k]-(1-p)/p*t[k-2]//边界条件是 t[0]=0,t[1]=1/p,t[2]=1/p+1/p^2//考虑两个账号 , 必然是(0,0) ==> (0 , 1) ==> (1 , 1) ==>(1 , 2) ... ==> (19 , 20)//其期望值为 t[1] - t[0] t[1]-t[0] t[2] - t[1] t[20] - t[19]//加起来为 t[19] + t[20] - 2*t[0]#include<cstdio>#include<iostream>#include<cstring>using namespace std ;const int maxn = 30 ;double t[maxn] ;int main(){ double p ; while(~scanf("%lf" , &p)) { t[0] = 0 ; t[1] = 1.0/p ; t[2] = 1.0/p + 1.0/(p*p) ; for(int i = 3;i <= 20;i++) t[i] = 1.0/p + 1.0/p*t[i-1] - (1.0-p)*t[i-3]/p ; printf("%.6lf\n" , t[19] + t[20]) ; } return 0 ;}
0 0
- hdu4870Rating 概率dp
- 概率dp
- ##概率dp##
- 概率dp
- 概率dp
- 概率dp
- 概率dp
- 概率dp
- 概率dp
- 概率dp
- 概率dp
- 概率DP
- 概率DP
- 概率dp
- 概率dp
- dp-概率dp
- 【区间dp,概率dp】
- DP专题之概率DP
- UI初级之常用UI控件UILabl 与 UIButton
- 坑爹的ViewPager
- 记一道很蛋疼的笔试题
- PHP安装pthreads多线程扩展教程[windows篇]
- ZOJ 3712 Hard to Play
- hdu4870Rating 概率dp
- 为什么学java开发?
- python 2 编码问题
- SpringMVC中使用Interceptor拦截器
- 中国足球深度剖析之五,破除周期性怪圈
- poj1113Wall【凸包】
- Java Serializable(序列化)的理解和总结
- vsftpd的配置详解(中文说明)
- 无法执行添加/移除操作,因为代码元素“CXXXDlg”是只读的