UVa 13056 Jerry‘s Game
2026/9/4 8:52:02 网站建设 项目流程

题目描述

Tom\texttt{Tom}TomJerry\texttt{Jerry}Jerry非常喜欢猫鼠游戏,这想必很明显。今天它们玩一个非常复杂的游戏。目标一如既往的简单:Jerry\texttt{Jerry}Jerry会跑,Tom\texttt{Tom}Tom必须抓住Jerry\texttt{Jerry}Jerry

今天Jerry\texttt{Jerry}Jerry在一个半径为RRR米的完美圆形轨道上以恒定速度V m/sV \, \text{m/s}Vm/s奔跑。开始时Tom\texttt{Tom}Tom坐在圆心处。他想尽快抓住Jerry\texttt{Jerry}Jerry,但众所周知,Tom\texttt{Tom}Tom不太聪明。他没有计算最优的追赶方向,而是始终朝着Jerry\texttt{Jerry}Jerry当前所在的位置跑去

由于Jerry\texttt{Jerry}Jerry也在移动,Tom\texttt{Tom}Tom的路径看起来像一条曲线。在任意时刻,Tom\texttt{Tom}Tom的位置都在Jerry\texttt{Jerry}Jerry的当前位置与圆心之间。Tom\texttt{Tom}Tom的速度也是恒定的V m/sV \, \text{m/s}Vm/s,与Jerry\texttt{Jerry}Jerry的速度相同。求Tom\texttt{Tom}Tom需要多少秒才能抓住Jerry\texttt{Jerry}Jerry

输入格式

输入第一行包含一个整数TTTT≤10000T \le 10000T10000),表示测试用例的数量。接下来TTT行,每行两个整数RRRVVV,满足0<R,V≤100000 < R, V \le 100000<R,V10000

输出格式

对于每个测试用例,输出一行Case x: y,其中xxx是测试用例编号(从111开始),yyyTom\texttt{Tom}Tom所需的时间。浮点数误差低于10−510^{-5}105将被忽略。

样例

输入

4 45 100 5 1547 1000 10000 5668 5467

输出

Case 1: 0.70685835 Case 2: 0.00507691 Case 3: 0.15707963 Case 4: 1.62854830

题目分析

本题是一个经典的运动学追逐问题,但Tom\texttt{Tom}Tom的追赶策略并非最优,而是始终指向猎物当前位置,即所谓“纯追踪”策略。猎物Jerry\texttt{Jerry}Jerry在半径为RRR的圆周上做匀速圆周运动,追者Tom\texttt{Tom}Tom从圆心出发,速度大小与猎物相同。

我们需要求出追者恰好追上猎物的时间。由于两者速度大小相等,且追者初始在圆心,猎物在圆上,直觉上追者似乎永远追不上,因为猎物也在运动。但事实上,由于追者始终指向猎物,它的路径是一条螺旋线,最终会在某个有限时刻与猎物相遇。

本题难点在于推导该相遇时间。直接建立微分方程求解较为繁琐,但可以通过对称性、极坐标变换或已知的物理结论简化。

解题思路

物理建模

设圆心为原点OOO,初始时Jerry\texttt{Jerry}Jerry位于圆上某点,不妨取为(R,0)(R, 0)(R,0),其运动方向为逆时针,角速度为ω=V/R\omega = V / Rω=V/RTom\texttt{Tom}Tom从原点出发,速度大小也为VVV,方向始终指向Jerry\texttt{Jerry}Jerry的瞬时位置。

在任意时刻ttt,设Jerry\texttt{Jerry}Jerry的极角为θ(t)=ωt\theta(t) = \omega tθ(t)=ωt(取初始θ(0)=0\theta(0) = 0θ(0)=0),Tom\texttt{Tom}Tom的极坐标为(r(t),ϕ(t))(r(t), \phi(t))(r(t),ϕ(t))。由于Tom\texttt{Tom}Tom始终指向Jerry\texttt{Jerry}Jerry,其速度方向沿着两者连线,即从Tom\texttt{Tom}Tom指向Jerry\texttt{Jerry}Jerry的方向。

我们可以列出极坐标下的微分方程组:

  • 径向速度:r˙=−Vcos⁡α\dot{r} = -V \cos \alphar˙=Vcosα,其中α\alphaα是连线方向与径向方向的夹角。
  • 横向速度:rϕ˙=Vsin⁡αr \dot{\phi} = V \sin \alpharϕ˙=Vsinα

α\alphaα与极角差δ(t)=θ(t)−ϕ(t)\delta(t) = \theta(t) - \phi(t)δ(t)=θ(t)ϕ(t)有关。通过几何关系可以得到tan⁡α=Rsin⁡δRcos⁡δ−r\tan \alpha = \frac{R \sin \delta}{R \cos \delta - r}tanα=RcosδrRsinδ(这里需要小心符号,但基本关系成立)。

关键结论

对于等速纯追踪问题,存在一个优美结论:当追者速度等于被追者速度时,追者从圆心出发追上圆上运动目标所需的时间恰好是目标转过π2\frac{\pi}{2}2π弧度所用的时间。即

t=弧长速度=R⋅π2V=πR2V. t = \frac{\text{弧长}}{\text{速度}} = \frac{R \cdot \frac{\pi}{2}}{V} = \frac{\pi R}{2V}.t=速度弧长=VR2π=2VπR.

这个结论可以通过变量替换或守恒量证明。例如,设u=r/Ru = r / Ru=r/R,并利用角度关系,可以将微分方程化为dudθ=usin⁡θ−1−u2…\frac{du}{d\theta} = \frac{u \sin \theta - \sqrt{1 - u^2}}{\dots}dθdu=usinθ1u2等形式,最终积分可得u=sin⁡θu = \sin \thetau=sinθ(当θ∈[0,π/2]\theta \in [0, \pi/2]θ[0,π/2])。当θ=π/2\theta = \pi/2θ=π/2时,u=1u = 1u=1,即r=Rr = Rr=R,此时追者恰好到达圆上,且与猎物相会(因为此时ϕ=θ\phi = \thetaϕ=θ,角度重合)。因此相遇时间为θ/ω=(π/2)/(V/R)=πR/(2V)\theta / \omega = (\pi/2) / (V/R) = \pi R / (2V)θ/ω=(π/2)/(V/R)=πR/(2V)

算法步骤

  1. 读入测试用例数TTT
  2. 对每个用例,读入RRRVVV
  3. 计算答案ans=π×R2×V\textit{ans} = \frac{\pi \times R}{2 \times V}ans=2×Vπ×R
  4. 按格式输出,保留足够多的小数位(如 10 位)。

复杂度分析

  • 时间复杂度:O(T)O(T)O(T),每个测试用例常数时间。
  • 空间复杂度:O(1)O(1)O(1),仅需几个变量。

代码实现

// Jerry's Game// UVa ID: 13056// Verdict: Accepted// Submission Date: 2026-06-20// UVa Run Time: 0.000s//// 版权所有(C)2026,邱秋。metaphysis # yeah dot net#include<bits/stdc++.h>usingnamespacestd;intmain(){intT;scanf("%d",&T);constdoublepi=acos(-1.0);for(intcaseNo=1;caseNo<=T;++caseNo){intR,V;scanf("%d %d",&R,&V);doubleans=(pi/2.0)*(double)R/(double)V;printf("Case %d: %.10f\n",caseNo,ans);}return0;}

总结

本题主要考察数学建模与几何物理直觉。关键点在于识别出等速圆周追逐的几何特性,并利用已知结论直接得出时间公式πR2V\frac{\pi R}{2V}2VπR,避免了复杂的微分方程求解。这种“从物理直觉到简单公式”的思维在算法竞赛中经常出现,平时应多积累常见运动模型的结论。

此外,浮点数精度需要注意,使用double\texttt{double}double并输出 10 位小数足以满足10−510^{-5}105的误差要求。代码实现非常简洁,体现了“数学推导先行,代码自然简单”的解题思路。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询