貪心。
有 n 個人在乙個水龍頭前排隊接水,假如每個人接水的時間為ti,請程式設計找出這 n 個人排隊的一種順序,使得 n 個人的平均等待時間最小。
第一行為乙個整數 n。
第二行 n 個整數,第 i 個整數 ti
表示第 i 個人的等待時間 ti。
輸出檔案有兩行,第一行為一種平均時間最短的排隊順序;第二行為這種排列方案下的平均等待時間(輸出結果精確到小數點後兩位)。
1056 12 1 99 1000 234 33 55 99 812
3 2 7 8 1 4 9 6 10 5
291.90
#include
#include
using std::sort;
struct water
p[1002];
double ans;
inline
bool
comp
(water a,water b)
intmain()
sort
(p+1
,p+n+
1,comp)
;for
(int i=
1; i<=n; i++
)//排完序的陣列即為順序,輸出即可
printf
("%d "
,p[i]
.num)
;printf
("\n");
for(
int i=
1; i<=n; i++
) ans+
=i*p[n-i]
.time;
//核心公式
ans/
=n;printf
("%.2f"
,ans)
;return0;
}
刷題路 排隊接水
有 n個人在乙個水龍頭前排隊接水,假如每個人接水的時間為 ti,請程式設計找出這 n個人排隊的一種順序,使得 n 個人的平均等待時間最小。第一行為乙個整數 n。第二行 n 個整數,第 i 個整數 ti。表示第 ii 個人的等待時間 ti。輸出檔案有兩行,第一行為一種平均時間最短的排隊順序 第二行為這...
刷題 排隊接水(水題妙解)
題面 n個人排隊到r個水龍頭去打水,他們裝滿水桶的時間t1,t2,tn為整數且各 不相等,應如何安排他們的打水順序才能使他們花費的時間最少?輸入 第1行,兩個整數n 1 n 500 和r 1 r 100 第2行,n個正整數t1,t2,tn,1 ti 1000 表示每個人裝滿水桶的時間。輸出 1行,乙...
排隊接水(貪心)
題目描述 有n個人在乙個水龍頭前排隊接水,假如每個人接水的時間為ti,請程式設計找出這n個人排隊的一種順序,使得n個人的平均等待時間最小。冒泡泡 第一行 n n 1000 第二行 第乙個人到第n個人每人的接水時間t1,t2,tn,每個資料之間有乙個空格 第一行 一種排隊順序,即1到n的一種排列 第二...