hdu 4870 Rating(概率dp)
题意:给你两个初始分数为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)的更多相关文章
- HDU 4870 Rating 概率DP
Rating Time Limit:5000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Statu ...
- 2014多校第一场J题 || HDU 4870 Rating(DP || 高斯消元)
题目链接 题意 :小女孩注册了两个比赛的帐号,初始分值都为0,每做一次比赛如果排名在前两百名,rating涨50,否则降100,告诉你她每次比赛在前两百名的概率p,如果她每次做题都用两个账号中分数低的 ...
- hdu 4870 Rating(可能性DP&高数消除)
Rating Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Su ...
- hdu 4870 Rating
题目链接:hdu 4870 这题应该算是概率 dp 吧,刚开始看了好几个博客都一头雾水,总有些细节理不清楚,后来看了 hdu 4870 Rating (概率dp) 这篇博客终于有如醍醐灌顶,就好像是第 ...
- HDU 4870 Rating(概率、期望、推公式) && ZOJ 3415 Zhou Yu
其实zoj 3415不是应该叫Yu Zhou吗...碰到ZOJ 3415之后用了第二个参考网址的方法去求通项,然后这次碰到4870不会搞.参考了chanme的,然后重新把周瑜跟排名都反复推导(不是推倒 ...
- HDU 4870 Rating(高斯消元 )
HDU 4870 Rating 这是前几天多校的题目,高了好久突然听旁边的大神推出来说是可以用高斯消元,一直喊着赶快敲模板,对于从来没有接触过高斯消元的我来说根本就是一头雾水,无赖之下这几天做DP ...
- HDU 3853LOOPS(简单概率DP)
HDU 3853 LOOPS 题目大意是说人现在在1,1,需要走到N,N,每次有p1的可能在元位置不变,p2的可能走到右边一格,有p3的可能走到下面一格,问从起点走到终点的期望值 这是弱菜做的第 ...
- HDU - 1099 - Lottery - 概率dp
http://acm.hdu.edu.cn/showproblem.php?pid=1099 最最简单的概率dp,完全是等概率转移. 设dp[i]为已有i张票,还需要抽几次才能集齐的期望. 那么dp[ ...
- HDU 4405 【概率dp】
题意: 飞行棋,从0出发要求到n或者大于n的步数的期望.每一步可以投一下筛子,前进相应的步数,筛子是常见的6面筛子. 但是有些地方可以从a飞到大于a的b,并且保证每个a只能对应一个b,而且可以连续飞, ...
- HDU 4576 Robot(概率dp)
题目 /*********************复制来的大致题意********************** 有N个数字,M个操作, 区间L, R. 然后问经过M个操作后落在[L, R]的概率. * ...
随机推荐
- 整合mybatis实现简单的增删改查
mybatis配置相关代码 配置 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE conf ...
- git reset 加不加 --hard的区别
通常我们提交代码一般都是 git add ,git commit -m, git push的这么个流程.添加到暂存区,提交到git库生成版本号,push到远程仓库以供他人可以使用.这是一个完整的且 ...
- Application.HandleMessage与Application.ProcessMessage
HandleMessage: HandleMessage中断应用程序的执行,以便Windows可以在将控制权返回给应用程序之前处理来自Windows消息队列的单个消息. 如果消息队列为空,则Handl ...
- css3 旋转 八仙桌
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 前端JS常用设计模式
话不多说,这里记录一些常见的设计模式,常看常新,也能提升JavaScript编程水平 一.设计原则 二.单例模式 单例模式的定义是,保证一个类仅有一个实例,并且要提供访问他的全局api 单例模式在前端 ...
- 【Leetcode第286场周赛】——周赛总结
1.5268. 找出两数组的不同 - 力扣(LeetCode) (leetcode-cn.com) 给你两个下标从 0 开始的整数数组 nums1 和 nums2 ,请你返回一个长度为 2 的列表 a ...
- Leetcode457
A very absurd description for this problem, but people can get the idea by looking at the examples.. ...
- Android studio的使用2
运行按钮First activity: package com.example.activity;import androidx.appcompat.app.AppCompatActivity;imp ...
- 熟悉Hadoop及其操作 3
启动hdfs 查看与创建hadoop用户目录. 在用户目录下创建与查看input目录. 将hadoop的配置文件上传到hdfs上的input目录下.运行MapReduce示例作业,输出结果放在ou ...
- 港湾云服务器 香港新世界 节点 centos7.7 64 部署java项目
开通云服务器 使用Xshell远程登录 XFTP连接服务器查看文件(这个步骤可有可无) yum安装jdk 在linux上使用yum安装是非常粗暴无脑的,但仍然有需要注意的点,不然会掉坑里.这里说一下步 ...