有 n 個人在乙個水龍頭前排隊接水,假如每個人接水的時間為 t
it_i
ti,請程式設計找出這 n 個人排隊的一種順序,使得 n 個人的平均等待時間最小。
輸入格式 第一行為乙個整數 n。
第二行 n 個整數,第 i 個整數 t
it_i
ti 表示第 i 個人的等待時間 t
it_i
ti。
輸出格式 輸出檔案有兩行,第一行為一種平均時間最短的排隊順序;第二行為這種排列方案下的平均等待時間(輸出結果精確到小數點後兩位)。
輸入
10
56 12 1 99 1000 234 33 55 99 812
輸出
3 2 7 8 1 4 9 6 10 5
291.90
說明/提示
n≤1000, t
i<=1
06
t_i<=10^6
ti<=1
06不保證 ti 不重複。
當 t
it_i
ti重複時,按照輸入順序即可(sort 是可以的)
**
#include
#include
#include
typedef
long
long ll;
typedef
struct str;
struct str
;int
cmp(
const
void
* a,
const
void
* b)
intmain()
qsort
(a, n,
sizeof
(a[0])
, cmp)
;for
(i =
0;i < n;i++
)printf
("\n%.2lf"
, sum/n)
;return0;
}
在測試的時候忘記在sum的累加上×n-i+1了 P1223 排隊接水
題目描述 有n個人在乙個水龍頭前排隊接水,假如每個人接水的時間為ti,請程式設計找出這n個人排隊的一種順序,使得n個人的平均等待時間最小。輸入輸出格式 輸入格式 輸入檔案共兩行,第一行為n 第二行分別表示第1個人到第n個人每人的接水時間t1,t2,tn,每個資料之間有1個空格。輸出格式 輸出檔案有兩...
P1223 排隊接水 題解
這個題是標準的貪心題目,只要保證按照耗費時間從小往大排列就可保證整個序列等待時間最短。但是還是有一些問題需要注意 1 第乙個最後的結果如果用float會溢位,爆掉五個點。2 二維陣列的sort排序 include include using namespace std int a newint 10...
洛谷 P1223 排隊接水
這一題是貪心來求解問題,讓小的在前面,大的在後面,就是貪心下的最優解 這裡使用一下priority queue優先佇列在做,這個是stl容器 下面是 include include include include include using namespace std typedef pair in...