排隊接水(貪心)

2021-10-04 20:29:39 字數 1392 閱讀 9374

題目描述

有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 同時只能有乙個人接水,正在接水的人和沒有接水的人都需要等待。完成接水的人會立刻消失,不會繼續等待。你可以決...