酷代码 AI
菜单
全部AI  /  热门  /  AI写代码神器
服务商

题目描述 御坂正在玩一个电脑游戏。他的角色正在杀死一些怪物。有n 个怪物,编号从1−n ,第i 个怪物最初的生命值为ai 。 御坂的角色可以对当前生命值最高的怪物造成k 点伤害。如果其中有几个,则选择编号较小的一个。如果怪物的生命值小于或等于0,在御坂使用他的能力后,它就会死亡。 御坂使用他的能力,直到所有怪物死亡。你的任务是确定怪物死亡的顺序。 输入描述 第一行是怪物的数量n(1≤n≤3×105) 和御坂每次可以对怪物造成的伤害k(1≤k≤109) 。 第二行是每个怪物的生命值ai(1≤ai≤109) 。 输出描述 输出怪物的死亡顺序 语言方向:C++ 系统环境:Windows 代码风格:空间复杂度优先

```cpp #include <iostream> #include <vector> #include <queue> using namespace std; int main() { int n, k; cin >> n >> k; vector<int> a(n); for (int i = 0; i < n; i++) { cin >> a[i]; } priority_queue<pair<int, int>> q; // 大顶堆,存储怪物生命值和编号 for (int i = 0; i < n; i++) { q.push({a[i], i + 1}); } vector<int> res; while (!q.empty()) { pair<int, int> top = q.top(); q.pop(); top.first -= k; if (top.first <= 0) { res.push_back(top.second); } else { q.push(top); } } for (int i : res) { cout << i << " "; } return 0; } // 额外注意点: // 1. 输入数据的合法性检查。 // 2. 处理边界情况,如只有一个怪物的情况。 // 3. 代码的可扩展性,方便后续功能的添加。 ``` [2025-02-11 21:48:02 | AI写代码神器 | 293点数解答]

相关提问