洛谷:P1223 排队接水

张开发
2026/5/7 9:54:29 15 分钟阅读

分享文章

洛谷:P1223 排队接水
题目描述有 n 个人在一个水龙头前排队接水假如每个人接水的时间为 Ti​请编程找出这 n 个人排队的一种顺序使得 n 个人的平均等待时间最小。一个人的等待时间不包括他的接水时间。如果两个人接水的时间相同编号更小的人应当排在前面。输入格式第一行为一个整数 n。第二行 n 个整数第 i 个整数 Ti​ 表示第 i 个人的接水时间 Ti​。输出格式输出文件有两行第一行为一种平均时间最短的排队顺序第二行为这种排列方案下的平均等待时间输出结果精确到小数点后两位。输入输出样例输入 #1复制10 56 12 1 99 1000 234 33 55 99 812输出 #1复制3 2 7 8 1 4 9 6 10 5 291.90说明/提示1≤n≤10001≤ti​≤106不保证 ti​ 不重复。题解#include iostreamusing namespace std;#include algorithm#include iomanipstruct person{int num;int time;};bool compare(person p1,person p2){if(p1.time!p2.time){return p1.timep2.time;}return p1.nump2.num;}int main(){int n;cinn;struct person a[1005];for(int i0;in;i){cina[i].time;a[i].numi1;}sort(a,an,compare);for(int i0;in;i){couta[i].num ;}coutendl;double sum0;int wait0;for(int i0;in;i){sumwait;waita[i].time;}coutfixedsetprecision(2)sum/nendl;system(pause);return 0;}

更多文章