乌拉乎餐厅问题:C++实现最少桌子安排方案
以下是解决该问题的C++代码: ```cpp #include <iostream> #include <fstream> #include <vector> #include <algorithm> #include <queue> using namespace std; // 定义顾客结构体 struct Customer { int arriveTime; // 到达时间 int waitTime; // 最多等待时间 }; // 比较函数,用于优先队列,按离开时间从小到大排序 struct Compare { bool operator()(const int& a, const int& b) { return a > b; } }; int main() { ifstream fin("case.in"); // 打开输入文件 ofstream fout("case.out"); // 打开输出文件 int n, m; fin >> n >> m; // 读取顾客数量和用餐时间 vector<Customer> customers(n); for (int i = 0; i < n; ++i) { fin >> customers[i].arriveTime >> customers[i].waitTime; // 读取每个顾客的到达时间和最多等待时间 } priority_queue<int, vector<int>, Compare> tables; // 优先队列,存储每张桌子的空闲时间 int maxTables = 0; // 记录最大需要的桌子数 for (int i = 0; i < n; ++i) { int arrive = customers[i].arriveTime; int wait = customers[i].waitTime; // 移除已经空闲的桌子 while (!tables.empty() && tables.top() <= arrive) { tables.pop(); } // 检查顾客是否会离开 if (tables.size() > 0 && tables.top() > arrive + wait) { continue; // 顾客离开 } // 安排顾客用餐 tables.push(arrive + m); // 更新桌子的空闲时间 maxTables = max(maxTables, static_cast<int>(tables.size())); // 更新最大桌子数 } fout << maxTables << endl; // 输出结果到文件 fin.close(); // 关闭输入文件 fout.close(); // 关闭输出文件 return 0; } ``` ### 代码解释: 1. **结构体 `Customer`**:用于存储每个顾客的到达时间和最多等待时间。 2. **优先队列 `tables`**:用于存储每张桌子的空闲时间,按空闲时间从小到大排序。 3. **主循环**:遍历每个顾客,检查是否有空闲的桌子,如果有则安排顾客用餐,更新桌子的空闲时间,并更新最大桌子数。 4. **文件操作**:使用 `ifstream` 和 `ofstream` 分别进行输入和输出文件的操作。 ### 复杂度分析: - **时间复杂度**:$O(n log n)$,主要是优先队列的操作。 - **空间复杂度**:$O(n)$,主要是优先队列的空间。 ######[AI问答 | 684点数解答 | 2026-04-21 19:41:58]
- 含不规则缺陷原材料的最优切割方案建模与损失率、利用率计算(DeepSeek | 2367点数解答 | 2025-05-10 23:47:30)273
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)363
- 工程师必备:十大APP性能优化方案大揭秘(百度文心 | 300点数解答 | 2023-11-09 18:31:04)343
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)334
- 浙闽“板凳龙”舞龙队 300 秒螺线盘入:位置与速度全揭秘(阿里通义 | 886点数解答 | 2024-09-07 10:31:31)643
- 浙闽“板凳龙”舞龙队 300 秒位置与速度数学模型揭秘(GPT | 565点数解答 | 2024-09-07 10:32:56)540
- 223节板凳龙沿等距螺线盘入:300秒内位置与速度的数学揭秘 (讯飞星火 | 443点数解答 | 2024-09-07 10:34:10)389
- 浙闽“板凳龙”300秒舞龙轨迹与速度:数学模型揭秘!(字节豆包 | 522点数解答 | 2024-09-07 10:35:06)358
- Excel 销售数据难题:2024 年 Q3 及特定时段销售情况计算全攻略(字节豆包 | 762点数解答 | 2024-11-06 19:11:51)201
- 从封闭到觉醒:中国在西方文化冲击下的曲折蜕变(讯飞星火 | 331点数解答 | 2024-11-30 21:50:57)207
- 陈独秀〈吾人最后之觉悟〉:文化冲突下的觉醒与奋进之路(百度文心 | 458点数解答 | 2024-11-30 21:51:52)214
- 从文化冲突到国民觉悟:中国近代变革的觉醒之路( | 21点数解答 | 2024-11-30 21:52:33)203