题链:https://cn.vjudge.net/problem/UVA-11181

题意


n个人去了超市,已知每个人买东西的概率为p[i],在已知有r个人买了东西的情况下,求实际上每个人买东西的概率

题解


设r个人买东西的时间为E

\[ans=p(i\;|\;E)=\frac{p(iE)}{p(E)}
\]

每个人买东西的概率是独立的,在一种r情况下,利用乘法原理即可。

多种r情况是互斥的,累加起来即可。

参考代码

  1. import java.io.*;
  2. import java.util.*;
  3. public class Main {
  4. static final int N=(int)5005;
  5. static double p[]=new double[25];
  6. static boolean vis[]=new boolean[25];
  7. static int n,r;
  8. static double sum[]=new double[25];
  9. static void dfs(int step,int cnt,double res) {
  10. if(step==n+2||cnt>r) return;
  11. if(step==n+1&&cnt==r) {
  12. sum[0]+=res;
  13. for(int i=1;i<=n;i++) if(vis[i]) {
  14. sum[i]+=res;
  15. }
  16. return;
  17. }
  18. vis[step]=false;
  19. dfs(step+1,cnt,res*(1-p[step]));
  20. vis[step]=true;
  21. dfs(step+1,cnt+1,res*p[step]);
  22. }
  23. public static void main(String[] args) {
  24. InputStream sys=System.in;
  25. InputReader in=new InputReader(sys);
  26. // Scanner sc=new Scanner(new InputStreamReader(sys));
  27. PrintWriter out=new PrintWriter(System.out);
  28. int T=1;
  29. while(true) {
  30. n=in.nextInt();r=in.nextInt();
  31. if(n==0&&r==0) break;
  32. for(int i=1;i<=n;i++) {
  33. p[i]=in.nextDouble();
  34. vis[i]=false;sum[i]=0;
  35. }
  36. sum[0]=0;
  37. dfs(1,0,1);
  38. StringBuffer ans=new StringBuffer();
  39. for(int i=1;i<=n;i++) {
  40. ans.append(String.format("%.6f\n", sum[i]/sum[0]));
  41. }
  42. out.println("Case "+(T++)+":");
  43. out.print(ans);
  44. out.flush();
  45. }
  46. }
  47. static class InputReader {
  48. public BufferedReader reader;
  49. public StringTokenizer tokenizer;
  50. public InputReader(InputStream stream) {
  51. reader = new BufferedReader(new InputStreamReader(stream), 32768);
  52. tokenizer = null;
  53. }
  54. public String next() {
  55. while (tokenizer == null || !tokenizer.hasMoreTokens()) {
  56. try {
  57. tokenizer = new StringTokenizer(reader.readLine());
  58. } catch (IOException e) {
  59. throw new RuntimeException(e);
  60. }
  61. }
  62. return tokenizer.nextToken();
  63. }
  64. public int nextInt() {
  65. return Integer.parseInt(next());
  66. }
  67. public double nextDouble() {
  68. return Double.parseDouble(next());
  69. }
  70. }
  71. }

【UVA 11181】(条件概率)的更多相关文章

  1. UVa 11181 条件概率

    题意:n个人选r个人,每个人被选中的概率为pi,问最后每个人被选中的概率是多少. sol:就是个简单的概率题,范围还特别小,深搜秒出...然而公式什么的很多还是需要注意的...     条件概率的公式 ...

  2. 集训第六周 数学概念与方法 UVA 11181 条件概率

    http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=18546 题意:有n个人会去超市,其中只有r个人会买东西,每个人独自买东西的概 ...

  3. UVa 11181 (条件概率) Probability|Given

    题意: 有n个人买东西,第i个人买东西的概率为Pi.已知最终有r个人买了东西,求每个人买东西的概率. 分析: 设事件E为r个人买了东西,事件Ei为第i个人买了东西.所求为P(Ei|E) = P(EiE ...

  4. UVA - 11181 数学

    UVA - 11181 题意: n个人去买东西,其中第i个人买东西的概率是p[i],最后只有r个人买了东西,求每个人实际买了东西的概率 代码: //在r个人买东西的概率下每个人买了东西的概率,这是条件 ...

  5. 概率论 --- Uva 11181 Probability|Given

    Uva 11181 Probability|Given Problem's Link:   http://acm.hust.edu.cn/vjudge/problem/viewProblem.acti ...

  6. uva 11181 - Probability|Given(概率)

    题目链接:uva 11181 - Probability|Given 题目大意:有n个人去超市买东西,给出r,每个人买东西的概率是p[i],当有r个人买东西的时候,第i个人恰好买东西的概率. 解题思路 ...

  7. UVa 11181 - Probability|Given(条件概率)

    链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  8. Probability|Given UVA - 11181(条件概率)

    题目大意:n个人去购物,要求只有r个人买东西.给你n个人每个人买东西的概率,然后要你求出这n个人中有r个人购物并且其中一个人是ni的概率pi. 类似于5个人中 抽出三个人  其中甲是这三个人中的一个的 ...

  9. Uva - 11181 Probability|Given (条件概率)

    设事件B为一共有r个人买了东西,设事件Ai为第i个人买了东西. 那么这个题目实际上就是求P(Ai|B),而P(Ai|B)=P(AiB)/P(B),其中P(AiB)表示事件Ai与事件B同时发生的概率,同 ...

随机推荐

  1. HDU6447(离散化扫描线+树状数组)

    一眼看过去就x排序扫描一下,y是1e9的离散化一下,每层用树状数组维护一下,然后像dp倒着循环似的树状数组就用y倒着插就可行了. 类似题目练习:BZOJ4653.BZOJ1218 #pragma co ...

  2. [洛谷P4185] [USACO18JAN]MooTube

    题目链接: 传送门 题意: 给定一颗N个节点的树,定义两点距离为他们之间路径中边权最小值. Q次询问K,V,询问到V距离>=K的点有多少(不含V) 呃呃呃呃考试的时候直奔了T3,结果公式推挂了( ...

  3. Analyzing Polyline CodeForces - 195D

    Analyzing Polyline CodeForces - 195D 题意:有n个函数,第i个函数yi(x)=max(ki*x+bi,0).定义函数s(x)=y1(x)+y2(x)+...+yn( ...

  4. 转 Java 208道面试题及部分答案 补充部分答案

    转自https://www.cnblogs.com/chen1005/p/10481102.html   ---恢复内容开始--- 一.Java 基础 1.JDK 和 JRE 有什么区别? 答:JRE ...

  5. 【转】Android进程机制

    以下资料摘录整理自老罗的Android之旅博客,是对老罗的博客关于Android底层原理的一个抽象的知识概括总结(如有错误欢迎指出)(侵删):http://blog.csdn.net/luosheng ...

  6. spring @value 为什么没有获取到值

    1.配置文件的路径没有扫描到 2.注解的bean 不是通过spring托管的.bean 要通过spring 注解,引用的时候要用@Autowired  自动注入的bean 不要用new 出来的bean ...

  7. centos系统iptables使用帮助

    #如果只是想屏蔽IP的话“开放指定的端口”可以直接跳过.#屏蔽单个IP的命令是iptables -I INPUT -s 123.45.6.7 -j DROP#封整个段即从123.0.0.1到123.2 ...

  8. vue render {} 对象 说明文档

    Vue学习笔记进阶篇——Render函数 http://www.mamicode.com/info-detail-1906336.html 深入data object参数 有一件事要注意:正如在模板语 ...

  9. HTML5新特性之History

    几年前,Ajax的兴起给互联网带来了新的生机,同时也使用户体验有了质的飞跃,用户无需刷新页面即可获取新的数据,而页面也以一种更具有交互性的形式为用户展现视图,可以说这种变化对互联网发展的贡献是史无前例 ...

  10. CPP-基础:关于私有成员的访问

    a.C++的类的成员函数中,允许直接访问该类的对象的私有成员变量. b.在类的成员函数中可以访问同类型实例的私有变量. c.拷贝构造函数里,可以直接访问另外一个同类对象(引用)的私有成员. d.类的成 ...