C++ 最优排队打水算法:最小化平均等待时间
#include <iostream>
#include <vector>
#include <algorithm>
#include <iomanip>
using namespace std;
bool compare(pair<int, int> p1, pair<int, int> p2){
return p1.second < p2.second;
}
int main(){
int n;
cin >> n;
vector<pair<int, int>> time(n);
for(int i=0; i<n; i++){
cin >> time[i].second;
time[i].first = i+1;
}
sort(time.begin(), time.end(), compare);
vector<int> order(n);
double total_wait_time = 0;
for(int i=0; i<n; i++){
order[i] = time[i].first;
total_wait_time += time[i].second * (n-i-1);
}
cout << fixed << setprecision(2);
for(int i=0; i<n; i++){
cout << order[i] << " ";
}
cout << endl;
cout << total_wait_time / n << endl;
return 0;
}
原文地址: https://www.cveoy.top/t/topic/pREp 著作权归作者所有。请勿转载和采集!