2024年算法精英第二场初赛赛前模拟E题Flower 题型:贪心+优先队列 一次过

51 阅读1分钟

赛氪OJ-专注于算法竞赛的在线评测系统 (saikr.com) 思想

image.png 以为是个很难的题,没想到一次过。

首先用个优先队列小跟堆,然后给v数组排个降序。添加k个v[i]进队列里,这时候队列里存的就是答案。

#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
int a[N];
int t[N];
int v[N];

priority_queue<int, vector<int>, greater<int>> q;

int main() {
	int n, k;
	cin >> n >> k;

	for (int i = 0; i < n; i++)
		cin >> t[i];
	for (int i = 0; i < n; i++)
		cin >> v[i];

	sort(v, v + n, greater<int>());

       int i=0;
       while(q.size()<k)
       {
       	q.push(v[i]);
       	i++;
	   }
	
	    int sum=0;
        while(q.size())
        {
        	int t=q.top();
        	sum+=t;
        	q.pop();
		}
		cout<<sum;
	return 0;
}

image.png