题意与分析(CodeForces 540D)

是一道概率dp题。

不过我没把它当dp做。。。

我就是凭着概率的直觉写的,还好这题不算难。

这题的重点在于考虑概率:他们喜相逢的概率是多少?考虑超几何分布的变形:$$P=\frac{C1_aC1_b}{C^2_{a+b+c}-\frac{a(a-1)}{2}-\frac{b(b-1)}{2}-\frac{c(c-1)}{2}}=\frac{ab}{ab+bc+ac}$$即可。

最后还有求和的操作需要注意一下(因为我们没考虑\(i,j,k\)为0的时候),显然当只有两方时,一方必胜,直接合并概率即可(加法原理)。

代码

  1. #include <iomanip>
  2. #include <iostream>
  3. #include <cstring>
  4. #include <algorithm>
  5. #include <vector>
  6. #define MP make_pair
  7. #define PB push_back
  8. #define fi first
  9. #define se second
  10. #define ZERO(x) memset((x), 0, sizeof(x))
  11. #define ALL(x) (x).begin(),(x).end()
  12. #define rep(i, a, b) for (int i = (a); i <= (b); ++i)
  13. #define per(i, a, b) for (int i = (a); i >= (b); --i)
  14. #define QUICKIO \
  15. ios::sync_with_stdio(false); \
  16. cin.tie(0); \
  17. cout.tie(0);
  18. using namespace std;
  19. int a,b,c;
  20. double dp[105][105][105];
  21. int main()
  22. {
  23. memset(dp,0,sizeof(dp));
  24. cin>>a>>b>>c;
  25. dp[a][b][c]=1;
  26. per(i,a,1)
  27. per(j,b,1)
  28. per(k,c,1)
  29. {
  30. double tmp=i*j+j*k+i*k;
  31. if(j-1>=0)
  32. dp[i][j-1][k]+=i*j/tmp*dp[i][j][k];
  33. if(i-1>=0)
  34. dp[i-1][j][k]+=i*k/tmp*dp[i][j][k];
  35. if(k-1>=0)
  36. dp[i][j][k-1]+=k*j/tmp*dp[i][j][k];
  37. }
  38. double ansi=0, ansj=0, ansk=0;
  39. rep(i,1,a) rep(j,1,100) ansi+=dp[i][j][0];
  40. rep(i,1,b) rep(j,1,100) ansj+=dp[0][i][j];
  41. rep(i,1,c) rep(j,1,100) ansk+=dp[j][0][i];
  42. cout<<fixed<<setprecision(10)<<ansi<<" "<<ansj<<" "<<ansk<<endl;
  43. return 0;
  44. }

「日常训练」Bad Luck Island(Codeforces Round 301 Div.2 D)的更多相关文章

  1. 「日常训练」Ice Cave(Codeforces Round 301 Div.2 C)

    题意与分析(CodeForces 540C) 这题坑惨了我....我和一道经典的bfs题混淆了,这题比那题简单. 那题大概是这样的,一个冰塔,第一次踩某块会碎,第二次踩碎的会掉落.然后求可行解. 但是 ...

  2. 「日常训练」School Marks(Codeforces Round 301 Div.2 B)

    题意与分析(CodeForces 540B) 题意大概是这样的,有一个考试鬼才能够随心所欲的控制自己的考试分数,但是有两个限制,第一总分不能超过一个数,不然就会被班里学生群嘲:第二分数的中位数(科目数 ...

  3. 「日常训练」Watering Flowers(Codeforces Round #340 Div.2 C)

    题意与分析 (CodeForces 617C) 题意是这样的:一个花圃中有若干花和两个喷泉,你可以调节水的压力使得两个喷泉各自分别以\(r_1\)和\(r_2\)为最远距离向外喷水.你需要调整\(r_ ...

  4. 「日常训练」Alternative Thinking(Codeforces Round #334 Div.2 C)

    题意与分析 (CodeForces - 603A) 这题真的做的我头疼的不得了,各种构造样例去分析性质... 题意是这样的:给出01字符串.可以在这个字符串中选择一个起点和一个终点使得这个连续区间内所 ...

  5. 「日常训练」More Cowbell(Codeforces Round #334 Div.2 B)

    题意与分析(CodeForces 604B) 题意是这样的:\(n\)个数字,\(k\)个盒子,把\(n\)个数放入\(k\)个盒子中,每个盒子最多只能放两个数字,问盒子容量的最小值是多少(水题) 不 ...

  6. 「日常训练」The Intriguing Obsession(CodeForces Round #439 Div.2 C)

    2018年11月30日更新,补充了一些思考. 题意(CodeForces 869C) 三堆点,每堆一种颜色:连接的要求是同色不能相邻或距离必须至少3.问对整个图有几种连接方法,对一个数取模. 解析 要 ...

  7. 「日常训练」Regular Bridge(Codeforces Round 306 Div.2 D)

    题意与分析 图论基础+思维题. 代码 #include <bits/stdc++.h> #define MP make_pair #define PB emplace_back #defi ...

  8. 「日常训练」Two Substrings(Codeforces Round 306 Div.2 A)

    题意与分析 一道非常坑的水题.分析醒了补. 代码 #include <bits/stdc++.h> #define MP make_pair #define PB emplace_back ...

  9. 「专题训练」Hard problem(Codeforces Round #367 Div. 2 C)

    题意与分析 题意:给出\(n\)个字符串,可以反转任意串,反转每个串都有其对应的花费\(c_i\).经过操作后是否能满足字符串\(\forall i \in [1,n] \text{且} i \in ...

随机推荐

  1. HDU 1698 【线段树,区间修改 + 维护区间和】

    题目链接 HDU 1698 Problem Description: In the game of DotA, Pudge’s meat hook is actually the most horri ...

  2. MFC自定义消息的实现方法

    一.概述: 消息机制是windows程序的典型运行机制,在MFC中有很多已经封装好了的消息,如WM_BTN**等.但是在有些特殊情况下我们需要自定义一些消息去完成一些我们所需要的功能,这时候MFC的向 ...

  3. mongo删除、添加分片

    MongoDB 分片的原理.搭建.应用   一.概念: 分片(sharding)是指将数据库拆分,将其分散在不同的机器上的过程.将数据分散到不同的机器上,不需要功能强大的服务器就可以存储更多的数据和处 ...

  4. 移动端meta标签的设置

    var phoneWidth = parseInt(window.screen.width); var phoneScale = phoneWidth / 640; var ua = navigato ...

  5. LeetCode 简单 -二进制求和(105)

    给定两个二进制字符串,返回他们的和(用二进制表示). 输入为非空字符串且只包含数字 1 和 0. 示例 1: 输入: a = "11", b = "1" 输出: ...

  6. 奇(qi)谋(ji)巧(yin)计(qiao)

    一.打表法 0.http://oeis.org/ 1.差分序列:https://blog.csdn.net/wu_tongtong/article/details/79115921 对于一个多项式产生 ...

  7. Tesseract-OCR 自动生成识别库的批处理

    用Tesseract-OCR做识别库的时候,生成字典非常麻烦,就写了一个批处理,用来生成字典还是蛮方便的,希望大家有用,该批处理已经自动生成font_properties文件,各位无需手动创建 下载地 ...

  8. getline的字符串读入

    也许是最近模拟题打多了的缘故,我发现自己渐渐变得比较毒瘤起来,当然这也是有一定的好处的,因为从中我也学到了一些处理字符串的正确姿势,今天我们就来讲一 讲如何用函数getline来读入一整行字符串进行处 ...

  9. 单文件版本的netframework的net core 2.1

    如果你还在用net4.5,如果你还在用netframework,又想使用netcore2.1的库或者功能,又觉得nuget动不动就好大,可以试试下面的这个. https://pan.baidu.com ...

  10. 抓包之Charles For Mac 4.0+破解版

    前言:突然间发现好久没有写博客了,最近被公司的项目弄得脑壳疼