hdu 3044 Dog and dog

http://acm.hdu.edu.cn/showproblem.php?pid=3044

当初我看到它的公式这么复杂,所以就一下子忽略这题了,想起来还真有点后悔。

好的,我翻译一下这一的意思吧!其实就是告诉你两个人和一条狗各时刻的瞬时速度,让你求出两人相遇的时候狗跑了多长的距离。当然,这里的相遇只需要两人相距10m以内。这个看上去很复杂的积分题如果在你做的时候注意一些细节,那么你就可以瞬间秒杀它了。
 
我的做法是在积分的过程中,把sin(sin2t)sin(cos2t)看做一个整体,假设是间接时间x(因为两者是一一对应的)。那么,此时的两个人对其速度和的积分就只是积v=v1sin(1)/x,最后在两人相遇前,所用的间接时间x=e(l1-10)/t
同理,对狗的速度的积分将变成v=v2cos(1)*1.55741/x,最后积得间接时间x内狗跑的距离s=v2cos(1)*1.55741*ln x。
整理可得,狗在两人相遇前最多能跑的距离为s=v2cos(1)*1.55741*(l1-10)/v1/sin1。然后就是比较数据给出狗跑的最长距离就可以得出答案了。
 
 
View Code
 1 #include<stdio.h>
 2 #include<math.h>
 3 #include<stdlib.h>
 4 #include<string.h>
 5 
 6 int main()
 7 {
 8     int T;
 9     double s, l1, l2, v1, v2;
10 
11     scanf("%d", &T);
12     while(T--)
13     {
14         scanf("%lf%lf%lf%lf", &l1, &l2, &v1, &v2);
15         s=cos(1)*1.55741*v2*(l1-10)/v1/sin(1);
16         if(s<0)printf("0\n");
17         else if(s>l2)printf("%.0lf\n", l2);
18         else printf("%.0lf\n", s);
19     }
20     return 0;
21 }
 
written by Lyon
原文地址:https://www.cnblogs.com/LyonLys/p/hdu_3044_Lyon.html