码迷,mamicode.com
首页 > 编程语言 > 详细

【贪心+排序】排队接水 luogu-1223

时间:2018-09-14 17:18:44      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:最小   i++   编程   sort   \n   read   时间   +=   getchar   

题目描述

有n个人在一个水龙头前排队接水,假如每个人接水的时间为Ti,请编程找出这n个人排队的一种顺序,使得n个人的平均等待时间最小。

分析

注意要开longlong

AC代码

#include <bits/stdc++.h>
using namespace std;
const int maxn=1005;
typedef long long ll;
struct record{
    int sum,id;
}a[maxn];
int n;
inline int read(){
    int w=0,X=0;char ch=0;
    while (!isdigit(ch)) {w|=ch=='-';ch=getchar();}
    while (isdigit(ch)) {X=(X<<1)+(X<<3)+(ch^48);ch=getchar();}
    return w?-X:X;
}
bool cmp(record a,record b){
    if (a.sum!=b.sum) return a.sum<b.sum;
    return a.id<b.id;
}
int main(){
    n=read();
    for (int i=1;i<=n;i++) a[i].sum=read(),a[i].id=i;
    sort(a+1,a+1+n,cmp);
    for (int i=1;i<=n;i++) printf("%d ",a[i].id); puts("");
    ll ans=0;
    for (int i=1;i<=n;i++) ans+=(n-i)*a[i].sum;
    printf("%0.2lf\n",(1.0*ans)/(1.0*n));
    return 0;
}

【贪心+排序】排队接水 luogu-1223

标签:最小   i++   编程   sort   \n   read   时间   +=   getchar   

原文地址:https://www.cnblogs.com/Dawn-Star/p/9647477.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!