happy running(概率dp?)

传送门

题目描述

在这里插入图片描述

输入描述

在这里插入图片描述

输出描述

在这里插入图片描述

输入样例

3
2 2
4 3
2 1

输出样例

0.50
0.22
0.00

与其说是个打着概率dp标签的题不如说就是个数学题

推导过程如图,注意特判当 k = x k=x k=x k > 2 ∗ x k>2*x k>2x 时的结果。

同时,在第一种可能( 即 k < x k<x k<x )中,由于 a 有一半的几率大于 b,且在该状态下一定超出,则该可能的结果需要加上 0.5 0.5 0.5

请添加图片描述

参考代码

#include<bits/stdc++.h>
using namespace std;
double x,k,ans;
    
int main(){
    int t;
    cin >> t;
    while(t--){
        cin>>k>>x;
        if(k<x){
            ans=((double)1.0*x*x-k*k)/(2.0*x*x);
            ans+=0.5;
        }
        else if(k==x){
            ans=0.5;
        }
        else if(k>=x&&k<2*x){
            ans=(double)(2.0*x-k)*(2.0*x-k)/(2.0*x*x);
        }
        else ans=0;
        printf("%.2lf\n",ans);
    }
    return 0;
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值