这道题是道简单思维题,做出来的人少真亏,认真思考下其实很简单。
每个人在队中不同的排名下有不同的追赶速度,而他需要超过前面的n-1个同学,然后再跑x距离。他首先需要用第n位的速度追赶第n-1位,然后用第n-1位的速度追赶第n-2位,然后用第n-2位的速度追赶第n-3位。。。直到他用第1位的速度再跑x距离,他就完成自己的任务。那么,一个人从第i位跑到第i-1位所用的时间为x/(Vi-1 - V平均),利用循环把从i=n到i=1的时间加起来就是这个人所用的时间。每个人都是如此,那么可以推断出,总时间为累加每一个x/(vi-v平均),此处vi为题目中所给的任意一个人任意时间的速度,要把所有的速度都算一遍。
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int n;
double x,v;
cin>>n>>x>>v;
double ans=0;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
{
double r;
scanf("%lf",&r);
ans+=(x/(r-v));
}
printf("%.2lf",ans);
return 0;
}