chika和蜜柑(贪心/优先队列)

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;
} 
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值