UVA-1498 Activation


DP应该是肯定的,设 f [ i ] [ j ] 表示现在对中共有 i 人,Tomato在第 j 个,出现所求情况的概率,我们可以很(简单的)艰难的列出下列方程:
f[i][1] = p1*f[i][1] + p2*f[i][i] + p4
f[i][j] = p1*f[i][j] + p2*f[i][j-1] + p3*f[i-1][j-1] + p4 (2<=j<=k)
f[i][j] = p1*f[i][j] + p2*f[i][j-1] + p3*f[i-1][j-1] (j>k)
(由于我们是在求第 i 项,所以第 i - 1 项是已知量)
然后化简可得:
令 a=p2/(1.0-p1) , b=p3/(1.0-p1) , c=p4/(1.0-p1)
f[i][1] = a*f[i][i] + c
f[i][j] = a*f[i][j-1] + b*f[i-1][j-1] + c (2<=j<=k)
f[i][j] = a*f[i][j-1] + b*f[i-1][j-1] (j>k)
再代入一(亿)下,可以求出 f [ i ] [ 1 ] 的表达式。
所以,我们先求出 [ i ] [ 1 ] ,然后就可以求出剩下的值了。
但是,这玩意怎么初始化呢?
YY一哈可以发现:
f[1][1] = a*f[1][1] + c
= c / (1-a)
之后就水到渠成了。
最后YY一哈,有特判!有特判!有特判!(可能出现除数为 0 的情况)(调了一个晚上,~qwq~)(具体见Code)
Code:

#pragma GCC optimize(2)
#pragma GCC optimize(3)
#include<bits/stdc++.h>
#define Zero(x) (((x)>0?(x):-(x))<1e-10)
using namespace std;
int n,m,K;
double p1,p2,p3,p4,a,b,c,Inv[2005],f[2][2005];
int main()
{
while(scanf("%d%d%d%lf%lf%lf%lf",&n,&m,&K,&p1,&p2,&p3,&p4)!=EOF)
{
if(Zero(p1+p2-1)==1) {printf("0.00000\n");continue;}
p1=1.0-p1,a=p2/p1,b=p3/p1,c=p4/p1,Inv[0]=1;
for(register int i=1;i<=n;++i) Inv[i]=Inv[i-1]*a;
for(register int i=1;i<=n;++i)
{
f[i&1][1]=c;
for(register int j=2;j<=min(i,K);++j) f[i&1][1]+=(b*f[(i-1)&1][j-1]+c)*Inv[i-j+1];
for(register int j=K+1;j<=i;++j) f[i&1][1]+=b*f[(i-1)&1][j-1]*Inv[i-j+1];
f[i&1][1]/=(1-Inv[i]);
for(register int j=2;j<=min(i,K);++j) f[i&1][j]=a*f[i&1][j-1]+b*f[(i-1)&1][j-1]+c;
for(register int j=K+1;j<=i;++j) f[i&1][j]=a*f[i&1][j-1]+b*f[(i-1)&1][j-1];
}
printf("%.5lf\n",f[n&1][m]);
}
return 0;
}
UVA-1498 Activation的更多相关文章
- HDU 4089 && UVa 1498 Activation 带环的概率DP
要在HDU上交的话,要用滚动数组优化一下空间. 这道题想了很久,也算是想明白了,就好好写一下吧. P1:激活游戏失败,再次尝试. P2:连接失服务器败,从队首排到队尾. P3:激活游戏成功,队首的人出 ...
- WebStorm 2016 最新版激活(activation code方式)
WebStorm 2016 最新版激活(activation code方式) WebStorm activation code WebStorm 最新版本激活方式: 今天下载最新版本的WebStorm ...
- IIS启动失败,启动Windows Process Activation Service时,出现错误13:数据无效 ;HTTP 错误 401.2 - Unauthorized 由于身份验证头无效,您无权查看此页
因为修改过管理员账号的密码后重启服务器导致IIS无法启动,出现已下异常 1.解决:"启动Windows Process Activation Service时,出现错误13:数据无效&quo ...
- uva 1354 Mobile Computing ——yhx
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABGcAAANuCAYAAAC7f2QuAAAgAElEQVR4nOy9XUhjWbo3vu72RRgkF5
- UVA 10564 Paths through the Hourglass[DP 打印]
UVA - 10564 Paths through the Hourglass 题意: 要求从第一层走到最下面一层,只能往左下或右下走 问有多少条路径之和刚好等于S? 如果有的话,输出字典序最小的路径 ...
- UVA 11404 Palindromic Subsequence[DP LCS 打印]
UVA - 11404 Palindromic Subsequence 题意:一个字符串,删去0个或多个字符,输出字典序最小且最长的回文字符串 不要求路径区间DP都可以做 然而要字典序最小 倒过来求L ...
- UVA&&POJ离散概率与数学期望入门练习[4]
POJ3869 Headshot 题意:给出左轮手枪的子弹序列,打了一枪没子弹,要使下一枪也没子弹概率最大应该rotate还是shoot 条件概率,|00|/(|00|+|01|)和|0|/n谁大的问 ...
- UVA计数方法练习[3]
UVA - 11538 Chess Queen 题意:n*m放置两个互相攻击的后的方案数 分开讨论行 列 两条对角线 一个求和式 可以化简后计算 // // main.cpp // uva11538 ...
- UVA数学入门训练Round1[6]
UVA - 11388 GCD LCM 题意:输入g和l,找到a和b,gcd(a,b)=g,lacm(a,b)=l,a<b且a最小 g不能整除l时无解,否则一定g,l最小 #include &l ...
- UVA - 1625 Color Length[序列DP 代价计算技巧]
UVA - 1625 Color Length 白书 很明显f[i][j]表示第一个取到i第二个取到j的代价 问题在于代价的计算,并不知道每种颜色的开始和结束 和模拟赛那道环形DP很想,计算这 ...
随机推荐
- 在C#中将图像转换为BASE64
本教程说明如何在C#.NET Windows Forms Application中将图像转换为base64字符串,以及将base64字符串转换为图像.您可以创建一个新的Windows窗体应用程序项目来 ...
- redis存取数据sortedSet
有序比无序的更耗性能 一.存取元素 1.添加元素,value存在则替换score值,不存在则添加: 2.获取某个元素的分数 3. 4.获取一定索引区间元素value值,默认按照对应score升序排序: ...
- Typeora 图床设置
Typeora 文章中的图片 使用 Github 作为图床. 使用 PicGo 上传图片到 Github 并获取图片链接. 设置 Typeora 的上传服务. 一.Github 作为图床 创建 Rep ...
- scrum项目冲刺_day10总结
摘要:今日完成任务. 1.发布功能实现 2.导航还在进行 总任务: 一.appUI页面(已完成) 二.首页功能: 1.图像识别功能(已完成) 2.语音识别功能(已完成) 3.垃圾搜索功能(基本完成) ...
- Stage 1 项目需求分析报告
迷你商城后台管理系统-- 需求分析 1. 引言 作为互联网热潮的崛起,消费者们的普遍差异化,实体商城要想在互联网的浪潮中继续发展,就需要制定出针对用户以及消费者的消费习惯以及喜爱品种的消费方案.从而企 ...
- STM32,下载HAL库写的代码后J-Link识别不到芯片,必须要按住复位才能下载?
问题描述:最近在学STM32的HAL库,据说可以统一STM32江湖,前途无量.最近一段时间参照STM32CubeMX和原子的资料自己学着建了两个HAL库的工程模板,F4的还好说,F1的出现了一个玄学问 ...
- Java基础系列(27)- 什么是方法
何谓方法 System.out.println();它是什么呢 # System:类 # out:对象 # println():方法 Java方法是语句的集合,它们在一起执行一个功能 方法是解决一类问 ...
- 腾讯云启动jenkins
首先配置后jdk环境 可参考:https://www.cnblogs.com/Uni-Hoang/p/12991686.html 下载jenkins的war包 在/usr/local/创建一个jenk ...
- greedy algorithm, insertion sort, quick sort
always makes the choice that seems to be the best at that moment. Example #1: @function: scheduling ...
- php备份mysql 数据库
1.新建php文件 <?phpheader('Content-Type:text/html;charset=utf8'); ini_set("max_execution_time&qu ...