題目描述
有n個人在乙個水龍頭前排隊接水,假如每個人接水的時間為ti,請程式設計找出這n個人排隊的一種順序,使得n個人的平均等待時間最小。(冒泡泡)
第一行:n(n<=1000)
第二行:第乙個人到第n個人每人的接水時間t1,t2,…tn,每個資料之間有乙個空格
第一行:一種排隊順序,即1到n的一種排列;
第二行:這種排列方案下的平均等待時間(輸出結果精確到小數點後兩位)。
10
5612199
1000
23433
5599
812
327
8149
6105291.90
因為一些神奇的原因,本題請使用氣泡排序進行排序。
讓平均時間最少,就要讓每個人的等待時間最少,所以應該讓接水時間少的在前面,這樣後面的人的等待時間就會盡可能少。
#include
using
namespace std;
#define inf 0x3f3f3f3f
#define full(a,b) memset(a,b,sizeof a)
#define ll long long
#define n 1005
int debug=2;
int n;
struct node
arr[n]
;int f[n]
;double ans=0;
intread()
intmain()
n=read()
;for
(int i=
1; i<=n; i++
) arr[i]
.x=read()
,arr[i]
.p=i;
for(
int i=n-
1; i>=
1; i--
)for
(int j=
1; j<=i; j++)if
(arr[j]
.x>arr[j+1]
.x)//氣泡排序
printf
("%d "
,arr[1]
.p);
//單獨輸出第乙個
for(
int i=
2; i<=n; i++
)for
(int i=
1; i<=n; i++
) ans+
=f[i]
;//求和
printf
("\n%.2lf"
,ans/n)
;//算平均
return0;
}
排隊接水(貪心演算法)
題目描述 有 n 個人在乙個水龍頭前排隊接水,假如每個人接水的時間為 ti,請程式設計找出這 n 個人排隊的一種順序,使得 n 個人的平均等待時間最小。輸入格式 第一行為乙個整數 n。第二行 n 個整數,第 i 個整數 ti 表示第i個人的等待時間 ti。輸出格式 輸出檔案有兩行,第一行為一種平均時...
(貪心1)排隊接水
問題描述 有n個人排隊到r個水龍頭去打水,他們裝滿水桶的時間t1 t2 tn為整數且各不相等,應如何安排他們的打水順序才能使他們總共花費的時間最少?輸入格式 第一行n,r n 500,r 75 第二行為n個人打水所用的時間ti ti 100 輸出格式 最少的花費時間 樣例輸入 3 2 1 2 3 樣...
51Nod 排隊接水 貪心
n n 個人一起排隊接水,第 i role presentation i i個人需要b i b i 的時間來接水。1 n 1000 1 n 1000 0 b i 1000 0 b i 1000 同時只能有乙個人接水,正在接水的人和沒有接水的人都需要等待。完成接水的人會立刻消失,不會繼續等待。你可以決...