P1223 排队接水

    xiaoxiao2021-03-26  71

    题目描述

    有n个人在排队接水,每个人接水的时间为Ti,使得n个人的排队平均等待时间最小。

    样例输入

    10 56 12 1 99 1000 234 33 55 99 812

    样例输出

    3 2 7 8 1 4 9 6 10 5 291.90

    思路

    O(n^2) 很容易就看出时间短的排在前面平均等待时间就越小,数据又不大,冒泡排序,时间累加起来除以人数,就是平均等待时间了。 var i,j,k,n:longint; l,t:int64; a,b:array[1..50000] of longint; begin readln(n); for i:=1 to n do begin read(a[i]); b[i]:=i; end; for i:=1 to n-1 do for j:=i+1 to n do if a[i]>a[j] then begin k:=a[i];a[i]:=a[j];a[j]:=k; k:=b[i];b[i]:=b[j];b[j]:=k; end; t:=a[1]; for i:=2 to n do begin l:=l+t; t:=t+a[i]; end; for i:=1 to n do write(b[i],' '); writeln; writeln(l/n:0:2); end.
    转载请注明原文地址: https://ju.6miu.com/read-661700.html

    最新回复(0)