kill(i,j)表示第i种硬币在第j轮或者之前就死光的概率,它等于(1-pi^j)^num(i)

rev(i,j)表示第i种硬币在j轮后仍然存活的概率,它等于1-kill(i,j)

然后对每种硬币i模拟100轮左右,每一轮答案要加上 在j轮后i仍然存活的概率*(在第j轮时其他恰好死光的概率《   这个值等于(∏(kill(j,k))-∏(kill(j,k-1)))(i!=j)   》)

注意,一定要特判n==1时输出1.000000,因为我们模拟时并没有考虑第0轮。

#include<cstdio>
using namespace std;
double Quick_Pow(double x,int k){
if(!k){
return 1;
}
double res=Quick_Pow(x,k>>1);
res*=res;
if(k&1){
res*=x;
}
return res;
}
int Zu,n,a[11];
double anss[11],p[11],rev[11][111],kill[11][111],kills[111];
int main(){
// freopen("d.in","r",stdin);
scanf("%d",&Zu);
for(int zu=1;zu<=Zu;++zu){
scanf("%d",&n);
for(int i=1;i<=n;++i){
scanf("%d%lf",&a[i],&p[i]);
}
if(n==1){
printf("%.6f\n",1.0);
continue;
}
for(int i=1;i<=n;++i){
double pi_j=1;
for(int j=1;j<=100;++j){
pi_j*=p[i];
kill[i][j]=Quick_Pow(1.0-pi_j,a[i]);
rev[i][j]=1.0-kill[i][j];
}
}
for(int i=1;i<=n;++i){
for(int k=1;k<=100;++k){
kills[k]=1;
for(int j=1;j<=n;++j){
if(i!=j){
kills[k]*=kill[j][k];
}
}
}
anss[i]=rev[i][1]*kills[1];
for(int k=2;k<=99;++k){
anss[i]+=rev[i][k]*kills[k];
anss[i]-=rev[i][k]*kills[k-1];
}
anss[i]-=rev[i][100]*kills[99];
}
for(int i=1;i<n;++i){
printf("%.6lf ",anss[i]);
}
printf("%.6lf\n",anss[n]);
}
return 0;
}

【概率论】hdu5985 Lucky Coins的更多相关文章

  1. HDU5985 Lucky Coins 概率dp

    题意:给你N种硬币,每种硬币有Si个,有Pi 概率朝上,每次抛所有硬币抛起,所有反面的拿掉,问每种硬币成为最后的lucky硬币的概率. 题解:都知道是概率dp,但是模拟赛时思路非常模糊,很纠结,dp[ ...

  2. poj3519 Lucky Coins Sequence矩阵快速幂

    Lucky Coins Sequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...

  3. Lucky Coins Sequence

    Lucky Coins Sequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...

  4. HDU 5985 Lucky Coins 数学

    Lucky Coins 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5985 Description Bob has collected a lot ...

  5. HDU 5985/nowcoder 207D - Lucky Coins - [概率题]

    题目链接:https://www.nowcoder.com/acm/contest/207/D 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5985 ...

  6. HDU 5985 Lucky Coins(概率)

    http://acm.split.hdu.edu.cn/showproblem.php?pid=5985 题意:有多种类型的硬币,每种类型的硬币都有一定的数量,现在每次抛硬币,除去朝下的硬币,知道最后 ...

  7. HDU.5985.Lucky Coins(概率DP)

    题目链接 \(Description\) 有n(n<=10)种硬币,已知每种硬币的数量和它抛一次正面朝上的概率pi.进行如下过程:每次抛一次所有硬币,将正面朝下的硬币去掉.重复该过程直到只剩一种 ...

  8. 2016 ACM/ICPC亚洲区青岛站现场赛(部分题解)

    摘要 本文主要列举并求解了2016 ACM/ICPC亚洲区青岛站现场赛的部分真题,着重介绍了各个题目的解题思路,结合详细的AC代码,意在熟悉青岛赛区的出题策略,以备战2018青岛站现场赛. HDU 5 ...

  9. 牛客国庆集训派对Day7 Solution

    A    Relic Discovery 水. #include <bits/stdc++.h> using namespace std; int t, n; int main() { s ...

随机推荐

  1. hdu 1200 To and Fro(简单模拟或DP)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1200 To and Fro Time Limit: 2000/1000 MS (Java/Others ...

  2. AGC025简要题解

    AGC025简要题解 B RGB Coloring 一道简单题,枚举即可. C Interval Game 考虑可以进行的操作只有两种,即左拉和右拉,连续进行两次相同的操作是没有用的. 左拉时肯定会选 ...

  3. DIV+CSS综合实例【传智PHP首页】

    1.首页结构 2.准备工作 所有素材放到与当前网页同级的目录下: 网页背景色.背景图: 主页宽度:1000px: 创建CSS文件,将CSS文件引入到当前的HTML文件中. 3.实现 效果图: HTML ...

  4. java===java基础学习(14)---封装

    package dog; public class Demo4 { public static void main(String []args) { Worker w1= new Worker(&qu ...

  5. .net设置浏览器的文本模式

    这段时间做个项目,做的时候因为之前习惯了Google的调试方式,所以就一直在google上面调试,今天项目成员大家的部分要整合,就放到ie8下面测试,但是遇到一个问题,就是用ie打开之后文本模式一直是 ...

  6. C++变量类型转换

    1:int转换为CString CString str; str.Format("As string: %d", int); 2:double转换为CString CString ...

  7. Objective-C字符串处理的函数

    Objective-C字符串处理的函数 NSLog(@"字符串处理"); //获得字符串长度 NSString* str1=@"MAC OS Pro"; NSL ...

  8. poj 1182 (扩展并查集)

    食物链 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 58979   Accepted: 17247 Description ...

  9. IOS中div contenteditable=true无法输入 fastclick.js在点击一个可输入的div时,ios无法正常唤起输入法键盘

    原文地址: https://blog.csdn.net/u010377383/article/details/79838562 前言 为了提升移动端click的响应速度,使用了fastclick.js ...

  10. 画图工具除了echarts我使用highcharts

    文件 :密码:xewx 官方文档教程地址:https://www.hcharts.cn/docs/basic-color 上手容易,api友好,尽管也有不尽人意的地方,但是它很适合我当前的项目,如果想 ...