题目描述Jack\texttt{Jack}Jack和Jill\texttt{Jill}Jill从山脚出发要运送指定体积VVV的水到山脚。每次过程如下两人从山脚走到山顶耗时UPUPUP秒。Jill\texttt{Jill}Jill将水桶从井口放下桶在重力作用下加速加速度32.2 ft/s232.2 \textit{ ft/s}^232.2ft/s2到达水面时立即装满。水桶容量为BBB立方英尺。Jill\texttt{Jill}Jill以PPP英寸/秒的速度将桶拉回井口。Jack\texttt{Jack}Jack将桶带下山脚耗时DOWNDOWNDOWN秒倒水瞬时再回到山顶耗时UPUPUP秒将空桶交给Jill\texttt{Jill}Jill。井是圆柱体直径为DDD英寸初始水面距井口LLL英寸。每次打水后水面下降桶的体积对应的水被取走。求运送VVV立方英尺水所需的总时间。输入格式每行七个实数UPUPUP、DDD、LLL、BBB、PPP、DOWNDOWNDOWN、VVV以一行小于111的实数结束。输出格式对于每个场景输出场景编号和输入参数最后输出所需时间保留两位小数。各组之间用空行分隔。样例输入20.0 36.0 72.0 2.0 10.0 18.0 10.0 25.0 72.0 200.0 1.5 8.0 30.0 20.0 0.0输出Scenario 1: up hill 20.00 sec well diameter 36.00 in water level 72.00 in bucket volume 2.00 cu ft bucket ascent rate 10.00 in/sec down hill 18.00 sec required volume 10.00 cu ft TIME REQUIRED 232.59 sec Scenario 2: up hill 25.00 sec well diameter 72.00 in water level 200.00 in bucket volume 1.50 cu ft bucket ascent rate 8.00 in/sec down hill 30.00 sec required volume 20.00 cu ft TIME REQUIRED 1141.63 sec题目分析本题是物理模拟题。每次打水过程的时间包括上山UPUPUP秒。桶下落自由落体从井口到水面距离为LLL英寸加速度32.2 ft/s232.2 \textit{ ft/s}^232.2ft/s2即386.4 in/s2386.4 \textit{ in/s}^2386.4in/s2。下落时间tdrop2L/aL/193.2t_{\textit{drop}} \sqrt{2L / a} \sqrt{L / 193.2}tdrop​2L/a​L/193.2​秒。桶上升匀速上升LLL英寸速度PPP英寸/秒时间L/PL / PL/P秒。下山DOWNDOWNDOWN秒。注意每次打水后水面下降新的LLL增加ΔL\Delta LΔLΔL\Delta LΔL由桶的体积BBB立方英尺除以井的截面积平方英寸得到需统一单位。每次打水后累计水量增加BBB直至达到或超过VVV注意浮点误差。输出总时间。解题思路读取参数统一单位将BBB和VVV转换为立方英寸111立方英尺123 12^3123立方英寸。计算每次打水后水面下降高度dropDownOfWell 4 * B / (PI * D * D)英寸。循环时间累加UPUPUP。下落时间sqrt(L / 193.2)。上升时间L / P。更新LLL增加dropDownOfWell。时间累加DOWNDOWNDOWN。累计水量增加BBB。当累计水量≥V\ge V≥V时停止。输出结果。复杂度分析循环次数约为V/BV / BV/B可能较大但VVV和BBB为正实数次数有限可接受。代码实现// Jack and Jill// UVa ID: 697// Verdict: Accepted// Submission Date: 2018-02-27// UVa Run Time: 0.000s//// 版权所有C2018邱秋。metaphysis # yeah dot net#includebits/stdc.husingnamespacestd;constdoublePI2.0*acos(0);intmain(){cin.tie(0),cout.tie(0),ios::sync_with_stdio(false);cout.setf(ios::fixed);cout.precision(2);doubleUP,D,L,B,P,DOWN,V;intcases0;while(cinUPDLBPDOWNV){if(cases0)cout\n;coutScenario cases:\n;cout up hillsetw(19)rightUP sec\n;cout well diametersetw(13)rightD in\n;cout water levelsetw(15)rightL in\n;cout bucket volumesetw(13)rightB cu ft\n;cout bucket ascent ratesetw(8)rightP in/sec\n;cout down hillsetw(17)rightDOWN sec\n;cout required volumesetw(11)rightV cu ft\n;doublefeetToInches12.0;doublevolume0,T0,dropDownOfWellpow(feetToInches,3.0)*4.0*B/(PI*D*D);V*feetToInches,B*feetToInches;while(volume1e-6V){TUP;Tsqrt(L/193.2);TL/P;LdropDownOfWell;TDOWN;volumeB;}cout TIME REQUIREDsetw(13)rightT sec\n;}return0;}总结本题通过模拟每次打水过程累加时间和水量最终得到总时间。关键点包括统一单位英尺 ↔ 英寸。正确计算自由落体时间和上升时间。每次打水后更新水面高度。注意浮点数比较时的精度控制。该解法是物理模拟和单位换算的典型练习。