P1223 排隊接水(乙個很秀的做法)

2021-09-26 08:21:05 字數 777 閱讀 8453

有n個人在乙個水龍頭前排隊接水,假如每個人接水的時間為ti,請程式設計找出這n個人排隊的一種順序,使得n個人的平均等待時間最小。

輸入檔案共兩行,第一行為n;第二行分別表示第1個人到第n個人每人的接水時間t1,t2,…,tn,每個資料之間有1個空格。

輸出檔案有兩行,第一行為一種排隊順序,即1到n的一種排列;第二行為這種排列方案下的平均等待時間(輸出結果精確到小數點後兩位)。

輸入 #1複製

10 

56 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#include#includeusing namespace std;

int n, t[1001],a;

double sum = 0;

int main()

//因為n<=1000所以給每個ti都*1001,再加上當前序號

sort(t+1, t + n+1);

for (int i = 1; i <= n; i++)

cout << endl;

printf("%0.2lf", sum / n);

}

P1223 排隊接水

題目描述 有n個人在乙個水龍頭前排隊接水,假如每個人接水的時間為ti,請程式設計找出這n個人排隊的一種順序,使得n個人的平均等待時間最小。輸入輸出格式 輸入格式 輸入檔案共兩行,第一行為n 第二行分別表示第1個人到第n個人每人的接水時間t1,t2,tn,每個資料之間有1個空格。輸出格式 輸出檔案有兩...

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...