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. feign hystrix 线程池伸缩控制

    当前使用的版本 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spr ...

  2. Python第三方库wordcloud(词云)快速入门与进阶

    前言: 笔主开发环境:Python3+Windows 推荐初学者使用Anaconda来搭建Python环境,这样很方便而且能提高学习速度与效率. 简介: wordcloud是Python中的一个小巧的 ...

  3. pinctrl框架【转】

    转自:http://www.cnblogs.com/kevinhwang/p/5703192.html pinctrl框架是linux系统为统一各SOC厂家pin管理,目的是为了减少SOC厂家系统移植 ...

  4. (十五)linux下gdb调试

    一.gdb常用命令: 命令 描述 backtrace(或bt) 查看各级函数调用及参数 finish 连续运行到当前函数返回为止,然后停下来等待命令 frame(或f) 帧编号 选择栈帧 info(或 ...

  5. 2017多校第8场 HDU 6143 Killer Names 容斥,组合计数

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6143 题意:m种颜色需要为两段长度为n的格子染色,且这两段之间不能出现相同的颜色,问总共有多少种情况. ...

  6. Python数据处理实战

    一.运行环境 1.python版本 2.7.13 博客代码均是这个版本2.系统环境:win7 64位系统 二.需求 对杂乱文本数据进行处理 部分数据截图如下,第一个字段是原字段,后面3个是清洗出的字段 ...

  7. SPOJ 375

    默默一看提交时间 -- 这是我以前的代码风格-- #include <cstdio> #include <cstring> #include <vector> #i ...

  8. MYSQL有外键无法删除

    今天删除数据库中数据,提示因为设置了foreign key,无法修改删除 可以通过设置FOREIGN_KEY_CHECKS变量来避免这种情况. SET FOREIGN_KEY_CHECKS=0; 删除 ...

  9. linux命令(32):free命令

    1.显示内存使用情况:free  free –g  free –m 2.以总和的形式显示内存的使用信息: free -t 3.周期性的查询内存使用信息:free -s 10

  10. ZOJ-3319

    Islands Time Limit: 1 Second      Memory Limit: 32768 KB There are N islands and some directed paths ...