An ant's story
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 788 Accepted Submission(s): 427
Problem Description
Long long ago, there is an ant crawling on an L-meter magic rubber band with speed of v cm/s.The magic rubber band will elongate m meters every second. We can assume that the magic rubber band elongates equably. Now, the ant is on the start point and crawling to another point, please tell me whether it can reach the endpoint.
Input
The first line of the input is T, which stands for the number of test cases you need to solve.
Each case include three integers: L , v , m ( 0< L< 10^9,0<= v, m< 10^ 9,).
Each case include three integers: L , v , m ( 0< L< 10^9,0<= v, m< 10^ 9,).
Output
For each test case, if the ant can reach endpoint, output "YES", otherwise "NO".
Sample Input
1 99999 61 1
Sample Output
YES
解题思路:
刚开始看到这题时,以为如果蚂蚁的速度V小于m便不会爬到终点。其实不然,因为绳子并不是不间断的增长
其实这纯粹是一道数学题
第一秒 蚂蚁走了绳子的(0.01*V)/(L+m)
第二秒 蚂蚁走了绳子的(0.01*V)/(L+2m)
……
第t秒 蚂蚁走了绳子的(0.01*V)/(L+t*m)
所以t秒时,蚂蚁走的行程就是这t个时间段的和
相加后,取积分
∫0.01*v/(L+t*m)dt=0.01*(v/m)*ln(L+t*m)+C
从0积到t0,=0.01*(v/m)*ln[(L+t0*m)/L].
只要0.01*(v/m)*ln[(L+t0*m)/L]大于等于1(即蝇长)即表示可以走到终点。
#include <iostream> using namespace std; int main() { int cass; for (scanf("%d",&cass);cass--;) { double v,m,l; scanf("%lf%lf%lf",&l,&v,&m); if (v>0) puts("YES"); else puts("NO"); } return 0; }