P1223 排队接水
要使得后面等待的时间少,那么就是要尽量让接水时间短的人排在前面。
按照接水所需时间从小到大排序,即为接水的顺序。
注意算平均值的时候不要把最后一个人的接水时间也加上。
\(AC code\)
#include<bits/stdc++.h>
using namespace std;
long long a,b[1005],c[1005];
double d;
int main()
{
scanf("%lld",&a);
for(int i=1;i<=a;i++)
{
scanf("%lld",&b[i]);
c[i]=c[i-1]+1;
}
for(int i=1;i<=a;i++)
{
for(int j=1;j<a;j++)
{
if(b[j]>b[j+1])
{
swap(b[j],b[j+1]);
swap(c[j],c[j+1]);
}
}
}
for(int i=1;i<=a;i++)
{
printf("%lld ",c[i]);
}
for(int i=1;i<a;i++)
{
b[i]+=b[i-1];
}
for(int i=1;i<a;i++)
{
b[i]+=b[i-1];
}
d=(double)b[a-1]/a;
printf("\n%.2lf",d);
return 0;
}
未完待续...