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

Posted dawn-star

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了贪心+排序排队接水 luogu-1223相关的知识,希望对你有一定的参考价值。

题目描述

有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
",(1.0*ans)/(1.0*n));
    return 0;
}

以上是关于贪心+排序排队接水 luogu-1223的主要内容,如果未能解决你的问题,请参考以下文章

luogu P1223 排队接水

luogu P1223 排队接水 x

洛谷 P1223 排队接水(贪心,桶排序)

洛谷 试炼场 P1233 排队接水 (排序,贪心)

贪心1--排队打水问题

有关排序的贪心策略的一种证明思想