题意:给你两个初始分数为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. java 类对象四种方法加载方式

    public static void main(String[] args) throws Exception { //第一种 //这里需要做异常处理,或的加载类的类对象类. Class<?&g ...

  2. 常用的DOS指令及部分快捷键

    常用的DOS指令及部分快捷键 1.dos打开方式 ​ win + R打开运行,输入cmd,打开dos 2.常用的Dos指令 a.切换盘号 方法 ​ 直接输入对应盘加" :" D: ...

  3. WEB攻击与防御技术 pikachu——XSS攻击加CSRF

    一.反射性xss(get) 登录pikachu选择xss模块,第一题,写了一下,发现输入长度不够,很简单,在前端改一下长度就可以使用了,这题就不做过多解释 或者直接在URL中进行写入,也是肥肠滴方便 ...

  4. K8s 与 Service Mesh(服务与流量治理)

    K8s相关资料可参考链接: Kubernetes简介 1  什么是Service Mesh Service Mesh 是一个专门处理服务通讯的基础设施层.它的职责是在由云原生应用组成服务的复杂拓扑结构 ...

  5. python 创建虚拟环境python –m venv方式

    1.环境准备 1.1.刷新包清单 sudo yum update 1.2.安装SCL实用程序 sudo yum install centos-release-scl 1.3.安装Python 3.6 ...

  6. 【python】第一模块 步骤四 第一课、初始正则表达式

    第一课.初始正则表达式 一.课程介绍 1.1 课程概要 步骤介绍 正则表达式入门及应用 正则的进阶 案例 综合项目实战 二.正则表达式的基本操作(多敲代码多做练习) 2.1 什么是正则表达式 什么是正 ...

  7. LSP原则中的逆变和协变

    在复习过程中,LSP原则是个很重要的内容.这里先给出LSP原则的定义. LSP定义Functions that use pointers or referrnces to base classes m ...

  8. ByteArrayInputStream和ByteArrayOutputStream不需要关闭流的原理--博客摘录

    ---------------- 版权声明:本文为CSDN博主「PSUUGDUFNM」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明.原文链接:https://blo ...

  9. gitbash 本地文件提交为一个新的项目 到 gitlab

    此篇操作的环境: 已经配置好一个本地仓库,且可成功的将本地项目提交到gitlab上的对应的远程仓库. 这意味着此时你的电脑已经安装好git,有一个本地仓库存放你的项目,成功配置好一个对应的远程仓库,且 ...

  10. css 多行文本展开收起

    <template> <div class="content"> <div :class="[isOpen ? 'text' : 'text ...