贪心+排序排队接水 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的主要内容,如果未能解决你的问题,请参考以下文章