洛谷P1223 排队接水

题目传送门


分析:题目要求所有人的平均等待时间最少,换句话说就是求等待时间最短,那么要想让等待接水的时间尽可能的短,那么就让接水那个人接水的时间尽可能的短

贪心策略:让接水时间短的人先接水

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>

using namespace std;

struct node
{
    int num;
    int data;
};
node person[1005];
int n;
long long sum;
double ans;

inline bool cmp(node x,node y)
{
    if(x.data==y.data) return x.num<y.num;
    return x.data<y.data;
}

int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&person[i].data);
        person[i].num=i;
    }
    sort(person+1,person+n+1,cmp);
    for(int i=1;i<=n-1;i++)
        sum+=person[i].data*(n-i);
    for(int i=1;i<=n;i++)
        printf("%d ",person[i].num);
    printf("\n");
    printf("%.2lf",1.0*sum/n);
    return 0;
}
View Code

猜你喜欢

转载自www.cnblogs.com/Hoyoak/p/11346080.html
今日推荐