chika和蜜柑
(1)思路:贪心
按照甜度最大的来取(从大到小排序),遇到相同甜度的去酸度最小(从小到大排序),可以用sort也可以用优先队列来写;
(2)测试数据
3 2
1 3 4
2 2 5
(3)代码(贪心思想 + sort)
#include <bits/stdc++.h>
using namespace std;
#define ll long long
int n;
// 在C++的语法里面,可以直接用 结构体名字来定义变量,而无需用typedef重命名
struct migan {
ll sweet;
ll sour;
};
bool cmp(migan a, migan b) {
if (a.sweet == b.sweet) {
return a.sour < b.sour;
} else {
return a.sweet > b.sweet;
}
}
int k;
migan nums[200005];
ll sumSweet;
ll sumSour;
int main (){
cin >> n >> k;
for (int i = 0; i < n; ++i) {
cin >> nums[i].sour;
}
for (int i = 0; i < n; ++i) {
cin >> nums[i].sweet;
}
sort(nums, nums + n, cmp);
for (int i = 0; i < k; ++i) {
sumSweet += nums[i].sweet;
sumSour += nums[i].sour;
}
cout << sumSour << ' ' << sumSweet;
return 0;
}