传送门

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)
Special Judge

Problem Description
There is a river on the Cartesian coordinate system,the river is flowing along the x-axis direction.

Rower Bo is placed at $(0,a)$ at first.He wants to get to origin $(0,0)$ by boat.Boat speed relative to water is $v_1$,and the speed of the water flow is $v_2$.He will adjust the direction of $v_1$ to origin all the time.

Your task is to calculate how much time he will use to get to origin.Your answer should be rounded to four decimal places.

If he can't arrive origin anyway,print "Infinity" (without quotation marks).

Input
There are several test cases. (no more than 1000)

For each test case,there is only one line containing three integers $a,v_1,v_2$.

$0\le a\le 100, 0\le v1,v2,\le 100, a,v_1,v_2$ are integers

Output
For each test case,print a string or a real number.

If the absolute error between your answer and the standard answer is no more than $10^{-4}$, your solution will be accepted.

Sample Input

2 3 3
2 4 3

Sample Output

Infinity
1.1428571429

Source
2016 Multi-University Training Contest 3


这题在现场做的时候试图直接解微分方程,但微分方程推出来却发现没法解,但题解上说,直接解微分方程可以搞,可能是我推微分方程的姿势不对,有待研究,微积分快忘干净了,好惨。

我现场的思路是:

考虑直角坐标下的运动学方程:

\begin{align} \frac{dx}{dt} &= v_2-\frac{x}{\sqrt{x^2+y^2}}v_1  \\       \frac{dy}{dt} &= -\frac{y}{\sqrt{x^2+y^2}}v_1  \end{align}

注意到如果将运动学方程写成直角坐标$(r,\theta)$的形式会更方便:

由$x=r\cos{\theta}, y=r\sin{\theta}, r=\sqrt{x^2+y^2}$, 上面两式可化成:

\begin{align} \cos{\theta} \, \dot{r} -\dot{\theta}\sin{\theta} \, r &= v_2-v_1\cos{\theta} \\ \sin{\theta} \, \dot{r} + \cos{\theta} \, \dot{\theta} r &= -v_1\sin{\theta} \end{align}

由上述两方程可解出$\dot{r}, r$:

\begin{align} \dot{r} &= v_2\cos{\theta}-v_1 \\  r &= -\frac{v_2\sin{\theta}}{\dot{\theta}}   \end{align}

将上两式代入

\begin{align}  \dot{r}=\frac{dr}{dt}   \end{align}

\begin{align}  \frac{v_2\sin{\theta} \, \ddot{\theta}}{\dot{\theta}^2}-v_2\cos{\theta} = v_2\cos{\theta}-v_1  \end{align}

要从这个微分方程解出$\theta=\theta(t)$比较困难,我目前还解不出。

这个微分方程是可解的:

\[ \frac{d\theta}{dt} = f \]

\[ \frac{d^2\theta}{dt^2} = \frac{df}{dt} =\frac{df}{d\theta}\frac{d\theta}{dt} = \frac{df}{d\theta}f \]

将上两式代入原方程,得

\[ \frac{df}{f} = \frac{2v_2\cos{\theta} - v_1}{v_2 \sin{\theta}} d\theta = (2\cot{\theta} -\frac{v_1}{v_2}\csc{\theta}) d\theta \]

积分得

\[ \ln{f} = 2\ln{| \sin{\theta} |} - \frac{v_1}{v_2}\ln{| \csc{\theta} -\cot{\theta} |} +C_1 \]

\[ f(\theta) = C_2\frac{\sin^2{\theta}} {|\csc{\theta}-\cot{\theta}|^{ \frac {v_1} {v2} } } \]

但到这一步貌似也没什么用,就算把右边的关于$\theta$的积分积出来,还要再求反函数才能得到$\theta (t)$。再次好惨。。

可能如果选择解$r=r(t)$会简单一点,再试试吧。。逃。。。


题解上给出的做法是:

\[ \frac{dr}{dt} = v_2\cos{\theta}-v_1 \]

\[ \frac{dx}{dt} = v_2-\frac{x}{\sqrt{x^2+y^2}}v_1 = v_2 - v_1 \cos{\theta}\]

实际上第一式($\frac{dr}{dt}$的表达式)可直接写出来,不需要像上面那样去推导。由于题目已说明船相对于水流的速度时刻指向原点,那么自然有$ \frac{dr}{dt} = v_2\cos{\theta}-v_1 $

两式对$t$积分,从时刻$0$积到(到达原点的)时刻$T$,这两个定积分就写成:

\[ 0-a = - v_1T + v_2\int_{0}^{T}{\cos{\theta} \, \text{d}\theta}  \]

\[0-0 = v_2T - v_1 \int_{0}^{T}{\cos{\theta} \, \text{d}\theta} \]

这样便可解出

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

从而不能到达原点的情况是 $a>0$且$v_1\le v_2$。

HDU 5761 Rower Bo的更多相关文章

  1. hdu 5761 Rower Bo 物理题

    Rower Bo 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5761 Description There is a river on the Ca ...

  2. hdu 5761 Rower Bo 微分方程

    Rower Bo Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total ...

  3. 【数学】HDU 5761 Rower Bo

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5761 题目大意: 船在(0,a),船速v1,水速v2沿x轴正向,船头始终指向(0,0),问到达(0, ...

  4. hdu 5761 Rowe Bo 微分方程

    1010 Rower Bo 首先这个题微分方程强解显然是可以的,但是可以发现如果设参比较巧妙就能得到很方便的做法. 先分解v_1v​1​​, 设船到原点的距离是rr,容易列出方程 \frac{ dr} ...

  5. hdu-5761 Rower Bo(数学)

    题目链接: Rower Bo Time Limit: 2000/1000 MS (Java/Others)     Memory Limit: 131072/131072 K (Java/Others ...

  6. HDU 5761 物理题

    Rower Bo Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total ...

  7. HDU 5752 Sqrt Bo (数论)

    Sqrt Bo 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5752 Description Let's define the function f ...

  8. HDU 5753 Permutation Bo (推导 or 打表找规律)

    Permutation Bo 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5753 Description There are two sequen ...

  9. HDU 5762 Teacher Bo (暴力)

    Teacher Bo 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5762 Description Teacher BoBo is a geogra ...

随机推荐

  1. springmvc请求参数异常处理

    接着上一篇<springmvc 通过异常增强返回给客户端统一格式>讲通过spring ControllerAdvice对各种异常进行拦截处理,统一格式返回给客户端. 接下来我们更精细的讲, ...

  2. Theano2.1.2-基础知识之第一步:代数

    来自:http://deeplearning.net/software/theano/tutorial/adding.html Baby Steps - Algebra 一.两个标量相加 在学习the ...

  3. DOM Element节点类型详解

    上文中我们讲解了 DOM 中最重要的节点类型之一的 Document 节点类型,本文我们继续深入,谈谈另一个重要的节点类型 Element . 1.概况 Element 类型用于表现 HTML 或 X ...

  4. 面向对象的PHP

    类的实例(包括继承) <?php // 父类 class Animal { public $name; public $age; // 构造函数,使用new操作符生成实例的时候自动调用 func ...

  5. 备忘:hibernate, logback, slf4j实际应用一例

    用hibernate写一些简单的数据库的Java应用.主要是温习一下.之前弄过的一些都忘了.发现还是得记下来,不然很快就忘. 1. Eclipse版本,用Juno, J2EE版本.最好下载zip版本的 ...

  6. Euler Level 2

    闲下来的时候就做点,慢慢的也终于到达Level 2了.

  7. Java 自动装箱与拆箱(Autoboxing and unboxing)

    什么是自动装箱拆箱 基本数据类型的自动装箱(autoboxing).拆箱(unboxing)是自J2SE 5.0开始提供的功能. 一般我们要创建一个类的对象实例的时候,我们会这样: Class a = ...

  8. JavaScript学习笔记-简单的欢迎cookie

    0<!DOCT0000YPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml&quo ...

  9. java之自定义回调接口

    本质上为:传递不同的实现的接口实例,执行不同的程序,即有扩展性. 在一个方法中,可以实现一个对象中的接口,实例化该接口,即可完成对不同对象的不同回掉. 在原有类中,调用接口中的方法,根据不同的接口实例 ...

  10. 用ElasticSearch和Protovis实现数据可视化

    搜索引擎最重要的目的,嗯,不出意料就是搜索.你传给它一个请求,然后它依照相关性返回你一串匹配的结果.我们可以根据自己的内容创造各种请求结构,试验各种不同的分析器,搜索引擎都会努力尝试提供最好的结果. ...