c++今天是路路的生日,生日蛋糕自然是少不了。路路的朋友们一起去蛋糕店来买蛋糕,可是等一行人到了蛋糕店之后,发现那里是人山人海啊-_-。这下可把店家给急坏了,因为人数过多,需求过大,所以人们要等好长时间才能拿到自己的蛋糕。由于每位客人订的蛋糕都是不同风格的,所以制作时间也都不同。老板为了最大限度的使每位客人尽快拿到蛋糕,因此他需要安排一个制作顺序,使每位客人的平均等待时间最少。这使他发愁了,于是他请你来帮忙安排一个制作顺序,使得每位客人的平均等待时间最少。
时间: 2024-02-25 19:53:48 浏览: 248
下面是C++代码实现:
```c++
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
struct Customer {
int id; // 客人编号
int time; // 制作时间
int arrival; // 到达时间
};
bool cmp(Customer a, Customer b) {
return a.time < b.time;
}
int main() {
int n;
cin >> n;
vector<Customer> customers(n);
for (int i = 0; i < n; i++) {
customers[i].id = i + 1;
cin >> customers[i].time >> customers[i].arrival;
}
sort(customers.begin(), customers.end(), cmp);
int wait_time = 0;
int total_wait_time = 0;
for (int i = 0; i < n; i++) {
wait_time += customers[i].time;
total_wait_time += wait_time - customers[i].arrival;
}
double avg_wait_time = (double)total_wait_time / n;
cout << avg_wait_time << endl;
return 0;
}
```
首先读入客人数量和每个客人的制作时间和到达时间,然后将客人按照制作时间从小到大排序。
接着,使用贪心策略,依次为每个客人安排制作顺序,计算每个客人的等待时间,并累加到总等待时间中。
最后,计算平均等待时间并输出。
阅读全文