題目描述
有n個人在乙個水龍頭前排隊接水,假如每個人接水的時間為ti,請程式設計找出這n個人排隊的一種順序,使得n個人的平均等待時間最小。
輸入輸出格式
輸入格式:
輸入檔案共兩行,第一行為n;第二行分別表示第1個人到第n個人每人的接水時間t1,t2,…,tn,每個資料之間有1個空格。
輸出格式:
輸出檔案有兩行,第一行為一種排隊順序,即1到n的一種排列;第二行為這種排列方案下的平均等待時間(輸出結果精確到小數點後兩位)。
輸入輸出樣例
輸入樣例#1:
1056 12 1 99 1000 234 33 55 99 812
輸出樣例#1:
3 2 7 8 1 4 9 6 10 5
291.90
說明n<=1000
ti<=1e6,不保證ti不重複
當ti重複時,按照輸入順序即可(sort是可以的)
/*簡單貪心,很容易想到。
記錄一下 過載 和控制格式的標頭檔案#include
*/ac_code:
//#include
#include
#include
//控制格式標頭檔案
#include
using namespace std;
struct person
}data[
1005];
intmain()
sort
(data,data+n)
;double sum =0;
for(
int i =
0,x = n-
1; i < n; i++
,x--
) cout
setprecision(2
)
}
P1223 排隊接水
有 n 個人在乙個水龍頭前排隊接水,假如每個人接水的時間為 t it i ti 請程式設計找出這 n 個人排隊的一種順序,使得 n 個人的平均等待時間最小。輸入格式 第一行為乙個整數 n。第二行 n 個整數,第 i 個整數 t it i ti 表示第 i 個人的等待時間 t it i ti 輸出格式...
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...