lightoj 1408 Batting Practice (概率问题,求期望,推公式)
题意:一个人若连续进k1个球或连续不进k2个球,游戏结束,给出这个人不进球的概率p(注意:是不进球!!!),求到游戏结束时这个投球个数的期望。
不进球概率为p,进概率 q=1-p。
设 f[i] 表示连续 i 次不进结束的期望,t[i]表示连续 i 次进球,距离结束的期望。显然,f[k2]=t[k1]=0;
f[i] = q*(f[i+1]+1)+p*(1+t[1]) , t[i] = p*(t[i+1]+1)+q*(1+f[1]).
答案是 p*t[1]+q*f[1]+1.
然后就算t[1],f[1]
将t[1],f[1]都移到等式左边,等式右边是其余的项,然后左右都乘以q/p^i(i=0,1,...k2-2/k1-2),总共k2-1/k1-1项。
消除中间项,只剩f[1],t[1]。然后就求解二元一次方程
#include <iostream>
#include <cmath>
#include <string.h>
#include <algorithm>
#include <cstdio> using namespace std;
double p,q; //击不中的概率为p,击中的概率为q
int k1,k2; //连续击中k1次,连续不击中k2次 int main()
{
int t;
int cases=;
scanf("%d",&t);
while(t--){
scanf("%lf%d%d",&p,&k1,&k2);
//不加下面的两个if,为WA
if(p>-1e-)
{
//未击中的概率近似为1
printf("Case %d: %.5lf\n",++cases,1.0*k2);
continue;
}
else if(p<1e-)
{
//未击中的概率近似为0
printf("Case %d: %.5lf\n",++cases,1.0*k1);
continue;
}
q=-p;
double a1=-pow(q,k1-),b1=a1/(-q);
double a2=-pow(p,k2-),b2=a2/(-p);
double t1=(a1*b2+b1)/(-a1*a2),f1=a2*t1+b2;
printf("Case %d: %.5lf\n",++cases,p*f1+q*t1+);
}
return ;
}
lightoj 1408 Batting Practice (概率问题,求期望,推公式)的更多相关文章
- lightoj 1408 Batting Practice
题意:一个人若连续进k1个球或连续不进k2个球,游戏结束,给出这个人进球的概率p,求到游戏结束时这个投球个数的期望. 进球概率为p,不进概率 q=1-p 设 f[i] 表示连续 i 次不进距离连续k2 ...
- HDU3853-LOOPS(概率DP求期望)
LOOPS Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 125536/65536 K (Java/Others) Total Su ...
- LightOJ 1030 【概率DP求期望】
借鉴自:https://www.cnblogs.com/keyboarder-zsq/p/6216762.html 题意:n个格子,每个格子有一个值.从1开始,每次扔6个面的骰子,扔出几点就往前几步, ...
- HDU 5245 Joyful(概率题求期望)
D - Joyful Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Submit S ...
- POJ2096 Collecting Bugs(概率DP,求期望)
Collecting Bugs Ivan is fond of collecting. Unlike other people who collect post stamps, coins or ot ...
- HDU-3853 LOOPS(概率DP求期望)
题目大意:在nxm的方格中,从(1,1)走到(n,m).每次只能在原地不动.向右走一格.向下走一格,概率分别为p1(i,j),p2(i,j),p3(i,j).求行走次数的期望. 题目分析:状态转移方程 ...
- hdu 4405 Aeroplane chess(简单概率dp 求期望)
Aeroplane chess Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)T ...
- Poj 2096 Collecting Bugs (概率DP求期望)
C - Collecting Bugs Time Limit:10000MS Memory Limit:64000KB 64bit IO Format:%I64d & %I64 ...
- HDU 3853 LOOP (概率DP求期望)
D - LOOPS Time Limit:5000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Submit St ...
随机推荐
- TeXworks代码补全功能
使用Tab键会自动补全(实在是太TM的方便了) 比如:
- 同时执行2个存储过程,2个SP中分别有相同的临时表名,会有冲突吗?
同时执行2个存储过程,2个SP中分别有相同的临时表名,会有冲突吗?答案:不会 这就可以在以后写存储过程的时候统一临时表名了. alter procedure sp_01 as begin create ...
- C# WinForm自定义控件响应键盘事件
自己定义的winform控件,用其他键盘事件都无法响应,只有用ProcessCmdKey事件可以达到目的(别忘了主窗体的KeyPreview属性要设置为true),写法如下: prot ...
- 关于EF分页查询报错(Count must have a non-negative value.)的解决方案
具体的异常信息如下,一开始没有写日志只看到错误信息:Count must have a non-negative value.,从表面意思可以看出来是Count值出现了负数,所以报错,查了半天的原因也 ...
- poj 1789 Truck History
题目连接 http://poj.org/problem?id=1789 Truck History Description Advanced Cargo Movement, Ltd. uses tru ...
- core java 5~6(OOP & 高级语言特征)
MODULE 5 OOP 面向对象程序设计--------------------------------------------------------Object Oriented Program ...
- PCRE正则库的使用
使用pcre编写C或C++程序,然后编译. 对于C程序,编译命令为:gcc -I/usr/local/include/pcre -L/usr/local/lib/pcre -lpcre file.c ...
- Linux 编辑器
vim编辑器 vi作为Unix上的一个编辑器,一直广受欢迎.之后GUN将其移植到开源世界中,经过开发人员对其进行了改善,被称为vi improved,就是现在的vim.为了方便使用,几乎所有的Linu ...
- Qt的Qss样式
http://www.cnblogs.com/coffeegg/archive/2011/11/15/2249452.html(转) http://blog.csdn.net/cgzhello1/ar ...
- SQLite函数详解之二
sqlite3支持的数据类型: NULL.INTEGER.REAL.TEXT.BLOB 但是,sqlite3也支持如下的数据类型 smallint 16位整数 integer ...