洛谷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; }