C++实现御坂游戏:优先队列搞定怪物死亡顺序,时间复杂度最优!
```cpp #include <iostream> #include <queue> #include <vector> #include <algorithm> using namespace std; int main() { int n, k; cin >> n >> k; vector<pair<int, int>> monsters; // pair: monster's health, index for (int i = 0; i < n; ++i) { int health; cin >> health; monsters.push_back({health, i + 1}); } // Custom comparator for sorting monsters by health in descending order auto cmp = [](const pair<int, int>& a, const pair<int, int>& b) { return a.first < b.first; }; priority_queue<pair<int, int>, vector<pair<int, int>>, decltype(cmp)> pq(cmp); for (const auto& monster : monsters) { pq.push(monster); } while (!pq.empty()) { pair<int, int> topMonster = pq.top(); pq.pop(); cout << topMonster.second << " "; topMonster.first -= k; // Decrease monster's health after attack if (topMonster.first > 0) { pq.push(topMonster); // Monster still alive, push back to queue } } return 0; } // 需要注意的逻辑点: // 1. 使用优先队列可以方便地选择当前生命值最高的怪物进行攻击。 // 2. 每次攻击后需要检查怪物的生命值,如果大于0则继续放回队列,否则表示怪物已死亡。 // 3. 按照怪物的初始顺序输出死亡顺序。 ``` ######[AI写代码神器 | 861点数解答 | 2025-01-06 19:44:34]
- 超燃年会来袭!诗舞歌戏轮番上阵,共赴欢乐盛宴! (字节豆包 | 206点数解答 | 2025-01-08 10:59:43)344
- Python代码实现:带窗口、滚轴、重力、惯性与怪物的类马里奥游戏(字节豆包 | 964点数解答 | 2025-06-13 19:11:12)196
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)345
- 易语言读取文本文件并显示到超级列表框:代码示例与注意要点(DeepSeek | 571点数解答 | 2025-08-23 20:54:40)224
- 易语言:读取并显示特定文本到超级列表框,还能增加新数据的方法与要点(DeepSeek | 1317点数解答 | 2025-08-23 20:58:40)230
- C++求解序列或与运算和差值:避O(nq)复杂度及数据处理要点(字节豆包 | 534点数解答 | 2025-10-17 20:05:07)60
- 重新定义字母大小关系:让 “L 队” 字典序小于 “某 E” 的代码实现与分析(字节豆包 | 595点数解答 | 2025-12-03 19:44:59)64
- 深入解析格雷码生成算法:递归求解与代码实现(DeepSeek | 443点数解答 | 2026-01-05 12:21:49)51
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)313
- C#工程师必知:数组、链表、哈希、队列、栈数据结构优缺点大揭秘! (百度文心 | 561点数解答 | 2023-11-09 17:56:30)263
- 揭秘!十进制整数转其他进制用啥存储结构最合适?答案竟是它!(字节豆包 | 57点数解答 | 2024-11-13 01:21:11)236
- Java 实现仿 Windows 资源管理器:文件管理器功能全解析与代码示例(字节豆包 | 623点数解答 | 2025-01-01 14:59:04)248