2010-1117
从 Trac 迁移的文章
这是从旧校内 Wiki 迁移的文章,可能存在一些样式问题,您可以向 memset0 反馈。
原文章内容如下:
题目大意是有一个队的队员练球,每个人有不同的带球速度,但每个人带球奔跑的时间有限,当自己带球时间到了之后可以传球但只能够向后传球,然后给出球场长度,问最短多长时间内可以把球带到底线。
这题显然就是一个贪心,将队员的速度按从大到小的顺序排个序然后模拟就可以了。
{{{
#!cpp
#include <cstdio>
#include <algorithm>
using namespace std;
int v[10001];
int main()
{
int n,t,l;
int rp;
scanf("%d",&rp);
for (int i=1;i<=rp;i++)
{
scanf("%d %d %d",&n,&t,&l);
for (int j=1;j<=n;j++)
{
scanf("%d",&v[j]);
}
sort(v+1,v+n+1);
double len=0;
double time=0;
bool findd=false;
for (int j=n;j>=1;j--)
{
if ((l-len)/(0.0+v[j]) <=t)
{
findd=true;
time+=(l-len)/(0.0+v[j]);
break;
}
else
{
time+=t;
len+=v[j]*t;
}
}
if (findd)
printf("%.2lf\n",time);
else
printf("-1\n");
}
}
}}}
题目大意是有一个队的队员练球,每个人有不同的带球速度,但每个人带球奔跑的时间有限,当自己带球时间到了之后可以传球但只能够向后传球,然后给出球场长度,问最短多长时间内可以把球带到底线。
这题显然就是一个贪心,将队员的速度按从大到小的顺序排个序然后模拟就可以了。
#include <cstdio>
#include <algorithm>
using namespace std;
int v[10001];
int main()
{
int n,t,l;
int rp;
scanf("%d",&rp);
for (int i=1;i<=rp;i++)
{
scanf("%d %d %d",&n,&t,&l);
for (int j=1;j<=n;j++)
{
scanf("%d",&v[j]);
}
sort(v+1,v+n+1);
double len=0;
double time=0;
bool findd=false;
for (int j=n;j>=1;j--)
{
if ((l-len)/(0.0+v[j]) <=t)
{
findd=true;
time+=(l-len)/(0.0+v[j]);
break;
}
else
{
time+=t;
len+=v[j]*t;
}
}
if (findd)
printf("%.2lf\n",time);
else
printf("-1\n");
}
}