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

2021-09-29 01:51:46 字數 674 閱讀 4686

問題描述:

設有n個顧客同時等待一項服務。顧客 i 需要的服務時間是 ti,共有s處可以提供此項服務。應如何安排n個顧客的服務次序,才能使平均等待時間達到最小?平均等待時間使n個顧客等待服務的總時間的和除以n。

輸入:10 2

56 12 1 99 1000 234 33 55 99 812

輸出:336

思路:我們同樣知道肯定是先需要服務時間短的客戶先被服務,但是又多個視窗,這其中具體安排客戶應該準受怎樣的規則呢?其實我們可以考慮計算每個視窗的工作時間,每次視窗服務乙個人時,該視窗之前工作的時間就是該人等待的時間。

code:

#include #include #include using namespace std;

const int n = 10010;

int a[n];

int b[n]; // 每個客戶在得到視窗之前等待的時間

int sum[n]; // 每個視窗對其所用客戶等待時間之和

int main()

int ans = 0;

for(int i = 0; i < s; i++)

ans += sum[i];

cout << 1.0 * ans / n << endl;

return 0;

}

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

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

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

問題描述 設有n個顧客等待服務,有k處可以提供這個服務,確定最優服務次序,讓顧客平均等待時間最少,這個平均等待時間就是顧客們等待的總和 n。input 第一行輸入n,k,表示n名顧客,k處服務店 第二行分別輸入n個整數,表示每名顧客所需要的服務時間。out輸出最少平均等待時間 輸入樣例10 2 56...

多處最優服務次序問題

設有n個顧客同時等待一項服務,顧客i需要的服務時間為ti,1 i n,共有s處可以提供此項服務。應如何安排n個顧客的服務次序才能使平均等待時間達到最小?平均等待時間是n個顧客等待服務時間的總和除以n。給定的n個顧客需要的服務時間和s的值,程式設計計算最優服務次序。輸入第一行有2個正整數n和s,表示有...