酷代码 AI
菜单
服务商

救援争先 内存限制: 256 Mb时间限制: 1000 ms 题目描述 某地出现了灾害,各地派出了 n n 只救援队。这些救援队是在同一天出发的,但出发时间不一样,路程也有长有短,所以达到时间有先有后。 给定每个队伍的出发时间,以及每只队伍的路程,请按照到达时间为这些队伍排序,如果多只队伍的到达时间正好相等,则出发时间靠前的队伍排在前列,如果出发时间仍然相等,则编号较小的队伍排在前列。 输入格式 第一行:单个整数 n n,表示救援队数量。 第二行到第 n + 1 n+1 行:在第 i + 1 i+1 行,有两个时间,表示第 i i 只救援队的出发时间和路程,数据格式均为 hh:mm: hh 表示小时,在 00 到 23 之间; mm 表示分钟,在 00 到 59 之间。 输出格式 共 n n 行,每行一个整数,按救援队到达的先后顺序输出它们的编号。 数据范围 1 ≤ n ≤ 1000 1≤n≤1000。 样例数据 输入: 3 19:00 01:00 15:00 05:00 15:00 05:00 输出: 2 3 1 说明: 3只队伍同时到达,2号和3号出发较早,所

```cpp #include <iostream> #include <vector> #include <algorithm> #include <string> // 定义一个结构体来存储每支救援队的信息 struct RescueTeam { int id; // 队伍编号 int startTime; // 出发时间,将时间转换为分钟存储 int journeyTime; // 路程所需时间,同样转换为分钟 int arrivalTime; // 到达时间,转换为分钟 // 构造函数,用于初始化结构体成员 RescueTeam(int _id, int _startTime, int _journeyTime) : id(_id), startTime(_startTime), journeyTime(_journeyTime) { arrivalTime = startTime + journeyTime; } }; // 自定义比较函数,用于对救援队按到达时间排序 bool compare(const RescueTeam& a, const RescueTeam& b) { if (a.arrivalTime != b.arrivalTime) { return a.arrivalTime < b.arrivalTime; // 到达时间早的排在前面 } if (a.startTime != b.startTime) { return a.startTime < b.startTime; // 到达时间相同,出发时间早的排在前面 } return a.id < b.id; // 到达时间和出发时间都相同,编号小的排在前面 } // 将时间字符串(hh:mm)转换为分钟数 int timeToMinutes(const std::string& timeStr) { int h = std::stoi(timeStr.substr(0, 2)); int m = std::stoi(timeStr.substr(3, 2)); return h * 60 + m; } int main() { int n; std::cin >> n; // 读取救援队的数量 std::vector<RescueTeam> teams; // 存储所有救援队信息的向量 for (int i = 1; i <= n; ++i) { std::string startTimeStr, journeyTimeStr; std::cin >> startTimeStr >> journeyTimeStr; // 读取出发时间和路程所需时间 int startTime = timeToMinutes(startTimeStr); int journeyTime = timeToMinutes(journeyTimeStr); teams.emplace_back(i, startTime, journeyTime); // 创建救援队对象并添加到向量中 } // 对救援队按自定义规则排序 std::sort(teams.begin(), teams.end(), compare); // 输出排序后的救援队编号 for (const auto& team : teams) { std::cout << team.id << std::endl; } return 0; } ``` 我在以往的开发过程中,碰到过以下几点需要格外小心处理的地方: 1. 时间转换时,要确保将小时和分钟正确地转换为分钟数,避免计算错误。 2. 在自定义比较函数中,要严格按照题目要求的优先级进行排序,避免排序结果不符合预期。 3. 输入输出时,要注意格式的正确性,特别是时间字符串的读取和处理。 [2025-08-07 10:56:54 | AI写代码神器 | 693点数解答]

相关提问
请收藏新域名:pdcd.cn
发财导航,免费问AI
实用工具查看更多
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]
数独游戏 [娱乐类]
经典推箱子 [娱乐类]
AI摸鱼五子棋 [娱乐类]