貪心演算法 多處最優服務次序問題(排隊等待時間最少)

2021-08-15 06:32:29 字數 1374 閱讀 3498

多處最優服務次序問題

題目描述:

¢ 設有

n個顧客同時等待一項服務,顧客

i需要的服務時間為ti

,1≤i

≤n,共有s

處可以提供此項服務。應如何安排

n個顧客的服務次序才能使平均等待時間達到最小?平均等待時間是

n個顧客等待服務時間的總和除以n。

¢ 給定的n

個顧客需要的服務時間和s的值,程式設計計算最優服務次序。

¢ 輸入

第一行有

2個正整數n和

s,表示有

n個顧客且有

s處可以提供顧客需要的服務。接下來的

1行中,有

n個正整數,表示

n個顧客需要的服務時間。 ¢

輸出 最小平均等待時間,輸出保留

3位小數。

輸入樣例

10 2

56 12 1 99 1000 234 33 55 99 812

輸出樣例

336.000

思路形成:

目要求平均等待的時間最短,即時間越短應被計算次數越多,所以對服務時間最短的顧客先服務的貪心選擇策略,做完第一次選擇後,原問題t

變成了需對n—

1個顧客服務的新問題t』

,規模一直縮小,符合貪心演算法。

**實現:

#includeusing namespace std;

double greedy(vectorclient,int num)//client為顧客等待的duilie,num為視窗總數

{ vectorservice(num+1,0); //服務視窗每乙個顧客等待的時間

vectorsum(num+1,0); //服務視窗顧客等待的時間總和

int n=client.size();

sort(client.begin(), client.end());

int i=0,j=0;

while(i>n>>num;

vectorclient(n,0);

for(i=0;i>client[i];

cout<

貪心演算法 多處最優服務次序問題

問題描述 設有n 個顧客同時等待一項服務。每個顧客需要服務一定時間。共有s 處可以 提供此項服務。應如何安排n 個顧客的服務次序才能使平均等待時間達到最小?平均等待時 間是n個顧客等待服務時間的總和除以n。程式設計任務 對於給定的n個顧客需要的服務時間和s的值,程式設計計算最優服務次序,先看下 in...

貪心 多處最優服務次序問題

問題 設有n個顧客同時等待一項服務,顧客i需要的服務時間為ti 1 i n 共有s處可以提供此項服務,應如何安排n個顧客需要的服務次序才能使平均等待時間達到最小?平均等待時間等於n個顧客等待服務的總時間除以n。輸入 第一行兩個正整數n和s表示n個顧客s處服務,接下來n個顧客需要的服務時間 輸出 平均...

多處最優服務次序問題(貪心)

問題描述 設有n個顧客同時等待一項服務。顧客 i 需要的服務時間是 ti,共有s處可以提供此項服務。應如何安排n個顧客的服務次序,才能使平均等待時間達到最小?平均等待時間使n個顧客等待服務的總時間的和除以n。輸入 10 2 56 12 1 99 1000 234 33 55 99 812 輸出 33...