2542. 最大子序列的分数
题目链接:2542. 最大子序列的分数
代码如下:
//参考:https://leetcode.cn/problems/maximum-subsequence-score/solutions/2073033/zhuan-huan-wen-ti-zui-xiao-dui-by-endles-9t8t
class Solution
{
public:
long long maxScore(vector<int>& nums1, vector<int>& nums2, int k)
{
vector<int> ids(nums1.size());
//输入一个值和一个容器的开始地址和结束地址,对该容器进行自增填充
iota(ids.begin(),ids.end(),0);
//对下标排序,不影响元素组的顺序
ranges::sort(ids,[&](int i,int j){return nums2[i]>nums2[j];});
priority_queue<int,vector<int>,greater<>> pq;
long long sum=0;
for(int i=0;i<k;i++)
{
sum+=nums1[ids[i]];
pq.push(nums1[ids[i]]);
}
long long res=sum*nums2[ids[k-1]];
for(int i=k;i<nums1.size();i++)
{
int x=nums1[ids[i]];
if(x>pq.top())
{
sum+=x-pq.top();
pq.pop();
pq.push(x);
res=max(res,sum*nums2[ids[i]]);
}
}
return res;
}
};