题意与分析(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的时候),显然当只有两方时,一方必胜,直接合并概率即可(加法原理)。

代码

#include <iomanip>
#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
#define MP make_pair
#define PB push_back
#define fi first
#define se second
#define ZERO(x) memset((x), 0, sizeof(x))
#define ALL(x) (x).begin(),(x).end()
#define rep(i, a, b) for (int i = (a); i <= (b); ++i)
#define per(i, a, b) for (int i = (a); i >= (b); --i)
#define QUICKIO \
ios::sync_with_stdio(false); \
cin.tie(0); \
cout.tie(0);
using namespace std; int a,b,c;
double dp[105][105][105]; int main()
{
memset(dp,0,sizeof(dp));
cin>>a>>b>>c;
dp[a][b][c]=1;
per(i,a,1)
per(j,b,1)
per(k,c,1)
{
double tmp=i*j+j*k+i*k;
if(j-1>=0)
dp[i][j-1][k]+=i*j/tmp*dp[i][j][k];
if(i-1>=0)
dp[i-1][j][k]+=i*k/tmp*dp[i][j][k];
if(k-1>=0)
dp[i][j][k-1]+=k*j/tmp*dp[i][j][k];
}
double ansi=0, ansj=0, ansk=0;
rep(i,1,a) rep(j,1,100) ansi+=dp[i][j][0];
rep(i,1,b) rep(j,1,100) ansj+=dp[0][i][j];
rep(i,1,c) rep(j,1,100) ansk+=dp[j][0][i];
cout<<fixed<<setprecision(10)<<ansi<<" "<<ansj<<" "<<ansk<<endl;
return 0;
}

「日常训练」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. window.jQuery || document.write("<script src='__PUBLIC__/assets/js/jquery.js'>"+"<"+"/script>")

    今天无意中看到这样一段代码 <script type="text/javascript"> window.jQuery || document.write(" ...

  2. 清空oracle session

    select 'alter system kill session '''||sid|| ','||serial#||''';' from v$session where username =' ';

  3. 使用cmd命令创建vue(ivieiw)项目

    条件,安装好nodejs 第一步:先使用 vue create 命令创建一个项目,等待创建完成. 1.切换目录 2.创建项目  vue create [项目名称] 第二步:切换到项目中. 第三步:使用 ...

  4. POJ 3122 Pie(二分+贪心)

    Pie Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 22684   Accepted: 7121   Special Ju ...

  5. springboot集成activiti工作流时容易出现的问题

    No.1 启动报错 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'or ...

  6. 【读书笔记】The Swift Programming Language (Swift 4.0.3)

    素材:Language Guide 初次接触 Swift,建议先看下 A Swift Tour,否则思维转换会很费力,容易卡死或钻牛角尖. 同样是每一章只总结3个自己认为最重要的点.这样挺好!强迫你去 ...

  7. Vue--- 一点车项目 连接数据库

    Vue--- 一点车项目  连接数据库 创建连接数据库配置 ###导入 const Koa = require('koa'); const Router = require('koa-router') ...

  8. vue移动端项目vw适配运行项目时出现"advanced"报错解决办法。

    Module build failed: Error: Cannot load preset "advanced". Please check your configuration ...

  9. IPC进程间通信---共享内存

    共享内存 共享内存:共享内存就是分配一块能被其它进程访问的内存.每个共享内存段在内核中维护着一个内部结构shmid_ds, 该结构定义在头文件linux/shm.h中,其结构如下: struct sh ...

  10. TeamViewer13个人版使用中提示为商用版导致无法使用

    前言:由于使用teamviewer个人免费版较频繁,被软件识别到不能再继续免费使用,无奈没有多余的资金进行购买正版软件, 通过鼓捣得到如下继续免费使用方案,整理下来以备不时之需,也可以被有同此困惑的朋 ...