题意:给你两个初始分数为0的账号让你去打比赛,每场比赛赢的概率为p,赢了加50分,输了-100分,当然你不会负分,每次你会用分低的账号去打比赛,问你把一个账号打到1000分的需要参加比赛次数的期望值。

思路:网上都是说理所当然,反正这是我做的第二道概率dp我是想不出来,写这个博客是因为别人都没说清楚,我都不知道咋化简的,搞明白后我来写个详细的。

把50分当成1分,赢一把加1分数了-2。dp【i】存的是从i-1分升到i分需要参加比赛次数的期望。如果赢的话,也就是打一场就到了,输的话分数变成了i-3,还得需要1 + dp[i-2] + dp[i-1] + dp[i]次才能到i分,因为就算输了,也是算参加了一次的,所以有这个1。 得到dp[i] = p*1 + (1-p)*(1 + dp[i-2] + dp[i-1] + dp[i]); 把右边的dp[i]移项化简:dp[i] = 1/p + (1-p)/p*(dp[i-2] + dp[i-1]); 只用算出来dp[1] dp[2]就行了,dp[1]很明显是1/p, dp[2]和dp[i]差不多,但是分不会降到负数只会降到0。dp[2] = p*1 + (1-p)*(1+dp[1]+dp[2]), 化简就是dp[2] = 1/p/p;

因为每次会打分第的号,所以结果肯定是一个1000分,一个950分,算出来两个都到1000分需要参加的场次,减去一个950分到1000分需要参加的场数就行了,也就是一个分数到1000一个到950需要的场次。

#include <bits/stdc++.h>
using namespace std; double dp[25]; //dp[i] 存的是从i-1涨分到i所需要参加比赛次数的期望
int main()
{
double p, tot;
while(cin >> p){
dp[1] = 1/p;
dp[2] = 1/p + (1-p)/p*dp[1];
tot = dp[1] + dp[2];
for(int i = 3; i <= 20; i++){
dp[i] = 1/p + (1-p)/p*(dp[i-2] + dp[i-1]);
tot += dp[i];
}
printf("%.6lf\n",tot*2 - dp[20]);
}
return 0;
}

hdu 4870 Rating(概率dp)的更多相关文章

  1. HDU 4870 Rating 概率DP

    Rating Time Limit:5000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Statu ...

  2. 2014多校第一场J题 || HDU 4870 Rating(DP || 高斯消元)

    题目链接 题意 :小女孩注册了两个比赛的帐号,初始分值都为0,每做一次比赛如果排名在前两百名,rating涨50,否则降100,告诉你她每次比赛在前两百名的概率p,如果她每次做题都用两个账号中分数低的 ...

  3. hdu 4870 Rating(可能性DP&amp;高数消除)

    Rating Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Su ...

  4. hdu 4870 Rating

    题目链接:hdu 4870 这题应该算是概率 dp 吧,刚开始看了好几个博客都一头雾水,总有些细节理不清楚,后来看了 hdu 4870 Rating (概率dp) 这篇博客终于有如醍醐灌顶,就好像是第 ...

  5. HDU 4870 Rating(概率、期望、推公式) && ZOJ 3415 Zhou Yu

    其实zoj 3415不是应该叫Yu Zhou吗...碰到ZOJ 3415之后用了第二个参考网址的方法去求通项,然后这次碰到4870不会搞.参考了chanme的,然后重新把周瑜跟排名都反复推导(不是推倒 ...

  6. HDU 4870 Rating(高斯消元 )

    HDU 4870   Rating 这是前几天多校的题目,高了好久突然听旁边的大神推出来说是可以用高斯消元,一直喊着赶快敲模板,对于从来没有接触过高斯消元的我来说根本就是一头雾水,无赖之下这几天做DP ...

  7. HDU 3853LOOPS(简单概率DP)

    HDU 3853    LOOPS 题目大意是说人现在在1,1,需要走到N,N,每次有p1的可能在元位置不变,p2的可能走到右边一格,有p3的可能走到下面一格,问从起点走到终点的期望值 这是弱菜做的第 ...

  8. HDU - 1099 - Lottery - 概率dp

    http://acm.hdu.edu.cn/showproblem.php?pid=1099 最最简单的概率dp,完全是等概率转移. 设dp[i]为已有i张票,还需要抽几次才能集齐的期望. 那么dp[ ...

  9. HDU 4405 【概率dp】

    题意: 飞行棋,从0出发要求到n或者大于n的步数的期望.每一步可以投一下筛子,前进相应的步数,筛子是常见的6面筛子. 但是有些地方可以从a飞到大于a的b,并且保证每个a只能对应一个b,而且可以连续飞, ...

  10. HDU 4576 Robot(概率dp)

    题目 /*********************复制来的大致题意********************** 有N个数字,M个操作, 区间L, R. 然后问经过M个操作后落在[L, R]的概率. * ...

随机推荐

  1. LoadRunner 常见错误

    1.LoadRunner录制脚本时为什么不弹出IE浏览器? 当一台主机上安装多个浏览器时,LoadRunner录制脚本经常遇到不能打开浏览器的情况,可以用下面的方法来解决. 启动浏览器,打开Inter ...

  2. 51定时器:0xee的由来

    定时时间=(65536-初值)×(12/晶振频率) 因为51实验板的晶振为11.0592,所以 定时时间=(65536-初值)×(12/11.0592) 定时1ms:1000=(65536-初值)×( ...

  3. gitee提交过程

    https://gitee.com/ 一个线上代码云端软件开发协作平台 首先注册一个账号 然后添加新的仓库 仓库名称和路径是必填项 然后创建项目 选择  克隆存储数据库 存储库位置是网站获取的git位 ...

  4. ULR1 B. 【ULR #1】光伏元件

    一个n∗nn∗n的0101矩阵ai,jai,j,有些位置可以修改,代价为ci,jci,j.要求进行一些修改之后满足:设clicli为第ii行的11的个数,cricri为第ii列的11的个数,要求cli ...

  5. python + appium 常用公共方法封装

    appium 程序下载安装见之前的帖子:https://www.cnblogs.com/gancuimian/p/16536322.html appium 环境搭建见之前的帖子:https://www ...

  6. Flutter 新建项目

    一.打开VSCode,点击侧边栏扩展按钮,搜索flutter,安装Flutter和Dart 二.按command+shift+P,输入flutter,选择Flutter:New project,新建项 ...

  7. oracle SDO_ORDINATE_ARRAY直接展示

    mdsys.sdo_geometry 中SDO_ORDINATE存储的是空间对象的几何节点坐标序列,要想直接展示第一条值出来需要捞出数据 若select t.id,t.shape.sdo_ordina ...

  8. 新手IC617安装NCSU pdk

    新手IC617安装NCSU cdk 以CMOSedu网站为参考:https://cmosedu.com/videos/cadence/tutorial1/cadence_tutorial_1.htm ...

  9. 执行kubectl api-resources 报错error: unable to retrieve the complete list of server APIs: metrics.k8s.io/v1beta1: the server is currently unable to handle the request

    1.故障现象:error: unable to retrieve the complete list of server APIs: metrics.k8s.io/v1beta1: the serve ...

  10. 学习JavaScript第一周

    三种输出方式,console.log.element.write.alert(): 简单数据类型:数值型.字符串型.布尔类型.undefined.null 复杂数据类型:对象 数据类型的转换:字符串转 ...