题解 UVA11346 【概率 Probability】

这道题目真是良心啊,没有卡精度

需要知道的知识:

  • 基础的概率论
  • 简单的微积分
  • 天马行空的想象力

分3种情况讨论:

第一种情况

输入的\(S\)是大于\(a\times b\)的,那么这个概率就是0%。

第二种情况

如果输入的\(S\)太小了,无限接近于0的话,那么概率就无限接近100%(良心出题人,没有卡这里的精度,如果再卡卡就要弄死我了)

第三种情况

也就是一般的情况

这里需要一些基础的初中数学知识来帮我们计算这个概率。

  • 因为这个区域是用平面直角坐标系的形式来描述的,所以我们可以运用分治的思想,沿\(x\)轴和\(y\)轴,把这个矩形分成4份。
  • 然后根据这个对称性,我们容易知道,直接在\([0,a]*[0,b]\)的矩形内取点即可,答案不用除以4
  • 然后?说过了要天马行空的想象力,那么我们来瞎搞吧qwq

具体思路:

  1. 设取出的\(P\)点的坐标是\((x,y)\)
  2. 那么我们可以知道,以\(OP\)为对角线的长方形面积就是等于\(x\times y\)
  3. \(xy>S\)的时候,就是我们需要的。但是,不等式十分的\(**\),所以,我们考虑函数来解释几何:当\(xy=S\)时,也即\(y=\frac{S}{x}\)时,所成的函数曲线在矩形\([0,a]*[0,b]\)以上的面积,再去除以这个矩形的总面积,就是答案了。
  4. 用定积分计算出这个矩形下面的面积,再用矩形的面积减去这个下面的面积,就是上面的面积。

所以我们要来搞搞喜闻乐见的定积分计算了

函数\(y=\frac{S}{x}\)是个反比例函数,也即双曲线函数。之前说过了,我们只讨论在第一象限内的玩意。

由于反比例函数的性质,我们容易知道,这个函数与矩阵的交点在\((\frac{S}{b},b)\),然后这个玩意的左边那个矩形的高是\(a\),所以我们应该在\([\frac{S}{b},a]\)这个范围内对函数\(y=\frac{S}{x}\)进行积分.

scw曾经不知天高地厚地背过积分表,然后……就用上了啊

\[\text{下边的面积}=S+\int_{\frac{S}{b}}^{a}\frac{S}{x}\,dx \]

推式子:

\(\text{下边的面积}=S+S\times \int_{\frac{S}{b}}^{a}\frac{1}{x}\,dx\)

\(\;\;\;\;\;\,\;\;\;\;\;\;\;\;\;\;\;\;\;\,=S+S\times (\ln a-\ln \frac{S}{b})\)
//记得这个\(\int\frac{1}{x}\,dx=\ln x\),然后套上牛顿--莱布尼兹公式

\(\;\;\;\;\;\,\;\;\;\;\;\;\;\;\;\;\;\;\;\,=S+S\times (\ln \frac{ab}{S})\)
//\(\ln\)的性质

\(\;\;\;\;\;\,\;\;\;\;\;\;\;\;\;\;\;\;\;\,=S\times (1+\ln \frac{ab}{S})\)

\(\;\;\;\;\;\,\;\;\;\;\;\;\;\;\;\;\;\;\;\,=S\times (1+\ln \frac{ab}{S})\)


\(Answer=\frac{\text{上面的面积}}{\text{总面积}}\)

\(\;\;\;\;\;\;\;\;\;\;\;\;\;\,=\frac{\text{总面积-下面的面积}}{\text{总面积}}\)

\(\;\;\;\;\;\;\;\;\;\;\;\;\;\,=\frac{ab-S\times (1+\ln \frac{ab}{S})}{ab}\)

然后?没了啊,就是这个基础的积分。如果没背过积分表的人可以用自适应辛普森算法(题解区里好像有人写?菜鸡的我不会……哭卿卿)

#include <bits/stdc++.h>
using namespace std;
int n;
double a,b,s;
int main()
{
  cin>>n;
  while(n--)
  {
    cin>>a>>b>>s;
    if(s>a*b) cout<<"0.000000%"<<endl;
    else if(s<0.001) cout<<"100.000000%"<<endl;
    else
    {
      double ans=100.0*(a*b-s*(1+log(a*b/s)))/a/b;
      printf("%.6lf",ans);
      cout<<"%"<<endl;
    }
  }
  return 0;
}

很好奇为啥第一篇题解是printf的%啊,多麻烦,敲俩%,cout只要敲一个%,剩下一个去%管理员去不好吗

qwq就是这样子辣,喵喵喵(概率论真是很可爱呢)

posted @ 2020-04-17 20:02  Laser_Crystal  阅读(188)  评论(0编辑  收藏  举报