2023-10-18每日一题
一、题目编号
2530. 执行 K 次操作后的最大分数
二、题目链接
三、题目描述
给你一个下标从 0 开始的整数数组 nums 和一个整数 k 。你的 起始分数 为 0 。
在一步 操作 中:
- 选出一个满足 0 <= i < nums.length 的下标 i ,
- 将你的 分数 增加 nums[i] ,并且
- 将 nums[i] 替换为 ceil(nums[i] / 3) 。
返回在 恰好 执行 k 次操作后,你可能获得的最大分数。
向上取整函数 ceil(val) 的结果是大于或等于 val 的最小整数。
示例 1:
示例 2:
提示:
- 1 <= nums.length, k <= 10^5^
- 1 <= nums[i] <= 10^9^
四、解题代码
cpp
class Solution {
public:
long long maxKelements(vector<int>& nums, int k) {
priority_queue<int> q(nums.begin(), nums.end());
long long ans = 0;
for (int i = 0; i < k; ++i) {
int x = q.top();
q.pop();
ans += x;
q.push((x + 2) / 3);
}
return ans;
}
};
五、解题思路
(1) 模拟+优先队列。