http://acm.hdu.edu.cn/showproblem.php?pid=3076

不可思议的题目,总之血量越少胜率越高,所以读取时把两人的血量交换一下

明显每一轮的胜率和负率都是固定的,所以设psc为胜率,pls为负率,peq为平率,

则在每一局中的胜率负率平率可以确定,

而在有结果的一个阶段中的胜率和负率则各是一个无穷级数

psc(new)=1*psc+peq*psc+peq*peq*psc.......=lim(n->正无穷)(1-peq^n)*psc/(1-peq)=psc/(1-peq)

pls(new)=1*pls+peq*pls+peq*peq*pls.......=lim(n->正无穷)(1-peq^n)*pls/(1-peq)=pls/(1-peq)

设p[i][j]为A的hp为i,B的hp为j的概率

很明显转移公式是:

当i>0,j>0时

p[i-1][j]+=p[i][j]*pls(new)

p[i][j-1]+=p[i][j]*psc(new)

#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <queue>
using namespace std;
const int maxn=2e3+3;
double p[maxn];
double pp[2][6];
double psc,pls,peq;
int a,b;
double ans; void calc(){
psc=pls=peq=0;
ans=0;
memset(p,0,sizeof p);
for(int i=0;i<6;i++){
for(int j=0;j<6;j++){
if(i==j)peq+=pp[0][i]*pp[1][j];
else if(i<j)pls+=pp[0][i]*pp[1][j];
else psc+=pp[0][i]*pp[1][j];
}
}
if(peq!=1){
psc/=(1-peq);
pls/=(1-peq);
}
p[b]=1;
for(int i=a;i>0;i--){
for(int j=b;j>0;j--){
p[j-1]+=p[j]*psc;
}
ans+=p[1]*psc;
for(int j=b;j>0;j--){
p[j]*=pls;
}
}
} int main(){
while(scanf("%d%d",&b,&a)==2){
for(int i=0;i<6;i++)scanf("%lf",pp[0]+i);
for(int i=0;i<6;i++)scanf("%lf",pp[1]+i);
calc();
printf("%.6f\n",ans);
} return 0;
}

HDU 3076 ssworld VS DDD 概率dp,无穷级数,oj错误题目 难度:2的更多相关文章

  1. hdu 3076 ssworld VS DDD (概率dp)

    ///题意: /// A,B掷骰子,对于每一次点数大者胜,平为和,A先胜了m次A赢,B先胜了n次B赢. ///p1表示a赢,p2表示b赢,p=1-p1-p2表示平局 ///a赢得概率 比一次p1 两次 ...

  2. hdu3076--ssworld VS DDD(概率dp第三弹,求概率)

    ssworld VS DDD Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) T ...

  3. hdu3076ssworld VS DDD 概率dp

    //ssworld VS DDD 两个人有血量值 hp1 , hp2  //两人掷骰子得到每一点的概率已知 //ssword赢的概率 //dp[i][j]  表示有第一个人血量为i.第二个人的血量为j ...

  4. HDU 5781 ATM Mechine (概率DP)

    ATM Mechine 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5781 Description Alice is going to take ...

  5. HDU 4050 wolf5x(动态规划-概率DP)

    wolf5x Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  6. hdu 4405 Aeroplane chess (概率DP)

    Aeroplane chess Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  7. HDU 4336——Card Collector——————【概率dp】

    Card Collector Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  8. 概率DP light oj 1030

    t组数据 n块黄金 到这里就捡起来 出发点1 到n结束  点+位置>n 重掷一次 dp[i] 代表到这里的概率 dp[i]=(dp[i-1]+dp[i-2]... )/6  如果满6个的话 否则 ...

  9. HDU 3853:LOOPS(概率DP)

    http://acm.split.hdu.edu.cn/showproblem.php?pid=3853 LOOPS Problem Description   Akemi Homura is a M ...

随机推荐

  1. bootstrap学习笔记<九>(菜单,按钮。导航基本元素)

    有了bootstrap作导航不再麻烦,几个样式,几个标签就能轻松搞定. 下面就来分解学习导航条的制作. 一.首先是下拉菜单 <div class="dropdown"> ...

  2. oracle 性能优化建议小结

    原则一:注意WHERE子句中的连接顺序: ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHER ...

  3. opencl gauss filter优化(二)

    1.buffer使用image的方式:Horizontal 与 Vertical 算法一样, 共需30ms,wait time 19ms. const sampler_t sampler = CLK_ ...

  4. POJ水题 1298

    #include "stdafx.h" #include <iostream> #include <string> using namespace std; ...

  5. 抛弃优启Grub4dos和PE大多数时间可以这样用

    在能够进入Windows的情况下,Grub4dos和PE大多数时间可以这样用 http://files.cnblogs.com/files/liuzhaoyzz/boot_moban.rar Grub ...

  6. C/C++中float和double的存储结构

    int main (int argc, char **argv) { float a = 1.0f; cout <<"(int&)a = "<<(i ...

  7. 【图形学】我理解的伽马校正(Gamma Correction)

    http://blog.csdn.net/candycat1992/article/details/46228771/ 写在前面 我相信几乎所有做图像处理方面的人都听过伽马校正(Gamma Corre ...

  8. Mybatis学习(壹)

    一.Mybatis的引言 1.Mybatis框架概念:是数据库持久层的框架,对数据库的访问和操作.Mybatis对JDBC的封装,Mybatis替换JDBC开发,解决DAO中的通用问题. 2.JDBC ...

  9. 解决 placeholder 垂直不居中,偏上的问题

    解决 placeholder 垂直不居中,偏上的问题 安卓浏览器显示placeholder 垂直不居中,而iphone没问题,搜了一下答案,解决方法是把input的line-height去掉就行 参考 ...

  10. 20145218 《Java程序设计》第8周学习总结

    20145218 <Java程序设计>第8周学习总结 教材学习内容总结 15.1 日志 15.1.1日志API简介 java.util.logging包提供了日志功能相关类与接口,不必额外 ...