有 n 個人在乙個水龍頭前排隊接水,假如每個人接水的時間為 \(t_i\),請程式設計找出這 n 個人排隊的一種順序,使得 n 個人的平均等待時間最小。
第一行為乙個整數 n。
第二行 n 個整數,第 i 個整數 \(t_i\) 表示第 i 個人的等待時間 \(t_i\)。
輸出檔案有兩行,第一行為一種平均時間最短的排隊順序;第二行為這種排列方案下的平均等待時間(輸出結果精確到小數點後兩位)。
輸入 #1
10
56 12 1 99 1000 234 33 55 99 812
輸出 #13 2 7 8 1 4 9 6 10 5
291.90
\(n\le1000,t_i\le10^6\),不保證 \(t_i\) 不重複。
當 \(t_i\) 重複時,按照輸入順序即可(sort 是可以的)
#include #include #include using namespace std;
struct node
sort(p,p+n);
for(i=0;iprintf("\n%.2f\n",ans/n);
return 0;
}
洛谷 P1223 排隊接水
這一題是貪心來求解問題,讓小的在前面,大的在後面,就是貪心下的最優解 這裡使用一下priority queue優先佇列在做,這個是stl容器 下面是 include include include include include using namespace std typedef pair in...
洛谷P1223 排隊接水
這裡主要想記一下強制型別轉換可能也需要浪費時間?一開始我是把sum定義為 int型別,下面的double s2 double sum n 有兩組資料死活跑不過,也不知道為啥,希望路過的大佬能給小弟看看。方法1 定義兩個陣列,乙個存資料,乙個存編號。include using namespace st...
洛谷 P1223 排隊接水(貪心)
有n個人在乙個水龍頭前排隊接水,假如每個人接水的時間為ti請程式設計找出這n個人排隊的一種順序,使得n個人的平均等待時間最小。標準的貪心,將接水時間最短的排在最前面即可。include using namespace std define int long long define ios ios s...