ants run 题意理解

来源:互联网 发布:asp 网页访问数据库 编辑:程序博客网 时间:2024/05/22 12:07

Professor Yang likes to play with ants when he is free. What? Are you asking why he plays with ants instead of others? Ah, because ant is the only non-plant living thing which can be found in Qingshuihe Campus of UESTC apart from human beings.

This time, Professor Yang caught several ants after finishing his lecture for freshmen. At the beginning of the game, he puts NN ants around a plate and numbers them in clockwise order. The ants are so obedient that they run clockwise under the guide of Professor Yang on the boundary of the plate which is a circle. When one ant catches up with its previous ant, the game is over. Knowing the speed of ants, Professor Yang wants you to help him to adjust the distance between adjacent ants to make the game last longer.

Input
The first line of the input is TT (no more than 1000010000), which stands for the number of test cases you need to solve.

Each test case begins with N R representing the number of ants participating the game is NN and the radius of the circle is RR cm. The next line lists NN integers and the ithith number is the speed (cm/s) of the ii-th ant in clockwise direction. All numbers are positive integer not larger than 2020.

Output
If the game can last forever, print Inf in a single line, otherwise please output the longest time in seconds each game can last, which should be printed accurately rounded to three decimals.

Sample Input
2
3 1
1 1 1
3 1
3 2 1
Sample Output
Inf
3.142

#include <cstdio>#include <cmath>double pi = acos(-1);const int eps = 1e-8;int main(){    int t;    scanf("%d",&t);    while (t--){        int n;        int r;        int a;        int sum = 0;        int tr = 0;        int first;        scanf("%d%d",&n,&r);        for (int i = 0; i < n; ++i){            scanf("%d",&a);            if (i == 0)                first = a;            if (tr > a) sum+=tr-a;            tr = a;        }        if (tr > first) sum += tr-first;        if (sum == 0) printf("Inf\n");        else printf("%.3lf\n",(double)2*pi*r/sum);    }    return 0;}

按顺序排列蚂蚁 但是是按圆排列的 所以 1 2 3 与 2 3 1 与3 1 2 是等价的 题意是求任意一个蚂蚁追上它之前的蚂蚁的最大时间 (安排距离来满足 ) 如果这一位蚂蚁比它之前的速度小或相等 那么它就不可能追得上 所以只有所有蚂蚁的速度都相等才能是inf 其他就算是找到相邻速度差最大的那个速度 即Δvmax*t=2*pi*r 求解t即可

0 0
原创粉丝点击