HDU 5761 Rower Bo 物理题(积分求时间)

点击打开链接

题意:

有一个船在(0,a),船头的方向一直指着(0,0)位置,速度是v1,然后有一个水流速度是v2,朝着x轴正半轴方向流。

问你什么时候船到达(0,0)位置

题解:

首先这个题微分方程强解显然是可以的,但是可以发现如果设参比较巧妙就能得到很方便的做法。

先分解v_1v1

Alt text

设船到原点的距离是rr,容易列出方程

\frac{ dr}{ dt}=v_2\cos \theta-v_1dtdr=v2cosθv1

\frac{ dx}{ dt}=v_2-v_1\cos \thetadtdx=v2v1cosθ

上下界都是清晰的,定积分一下:

0-a=v_2\int_0^T\cos\theta{ d}t-v_1T0a=v20Tcosθdtv1T

0-0=v_2T-v_1\int_0^T\cos\theta{ d}t00=v2Tv10Tcosθdt

直接把第一个式子代到第二个里面

v_2T=\frac{v_1}{v_2}(-a+v_1T)v2T=v2v1(a+v1T)

T=\frac{v_1a}{{v_1}^2-{v_2}^2}T=v12v22v1a

到达不了的情况就是v_1< v_2v1<v2(或者a>0a>0v_1=v_2v1=v2)。

#include<bits/stdc++.h>
using namespace std;
int main()
{
    double a,v1,v2;
    while(~scanf("%lf %lf %lf",&a,&v1,&v2))
    {
        if(a==0)
            cout<<"0.00000"<<endl;
        else if(v1<=v2)
        {
            cout<<"Infinity"<<endl;
        }
        else
        {
            printf("%.10f\n",a*v1/(v1*v1-v2*v2));
        }
    }
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值