题库首页 › 青少年软件编程(C语言) › 题目 15128

排队序列 已知现在有 n 个人需要打电话,他们已经排好了队伍,每个人打电话的时间为Ti。请你帮助他们找到一个排队打电话的队列方案,使队伍的平均等待时间更短。 输入格式 第一行:一个正整数n,表示一共n个人。 第二行:n个数字,分别表示第1个人到第n个人每人的打电话时间T1,T2,…,Tn,每个数据之间有1个空格。 输出格式 第一行为一种排队顺序,即原先队列编号1到n的一种排列; 第二行为这种排列方案下的平均等待时间(输出结果精确到小数点后两位,按照C语言的浮点数保留规则进行保留)。 输入样例 10 56 12 1 99 1000 234 33 55 99 812 输出样例 3 2 7 8 1 4 9 6 10 5 291.90 说明提示 1≤n≤100000 1≤Ti≤1000000 如果有多种排列都可以让平均等待时间最短,则输出其中字典序最小的序列。字典序指的是英文单词在字典中排序使用的规则顺序。 限制 时间限制:1000ms 内存限制:512MiB

正确答案:参考程序(Python):n=int(input());t=list(map(int,input().split()));idx=sorted(range(n),key=lambda i:t[i]);print(' '.join(str(i+1) for i in idx));pre=0;tot=0;for i in idx:tot+=pre;pre+=t[i];print('%.2f'%(tot/n))。样例→3 2 7 8 1 4 9 6 10 5、291.90。核心:短作业优先+平均等待。

试卷来源:202506 青少年等级考试C/C++真题四级

本卷相关题目

在线做题 同科目题库