蓝桥杯备考:贪心算法之纪念品分组

P1094 [NOIP 2007 普及组] 纪念品分组 - 洛谷

这道题我们的贪心策略就是每次找出最大的和最小的,如果他们加起来不超过我们给的值,就分成一组,如果超过了,就把大的单独成一组,小的待定

cpp 复制代码
#include <iostream>
#include <algorithm>
typedef long long LL;
using namespace std;

LL w,n;
const int N = 3e4+10;
LL a[N];
int main()
{
	cin >> w >> n;
	for(int i = 1;i<=n;i++) cin >> a[i];
	sort(a+1,a+1+n);
	LL l = 1,r = n;
	LL ret = 0;
	while(l<=r)
	{
		if(a[l]+a[r] <= w)
		{
			ret++;l++,r--;
		}
		else{
			ret++;r--;
		}
	}
	cout << ret << endl;
	
	
	
	return 0;
}
相关推荐
Python 老手19 小时前
Python while 循环 极简核心讲解
java·python·算法
@Aurora.19 小时前
优选算法【专题九:哈希表】
算法·哈希算法·散列表
爱看科技19 小时前
微美全息(NASDAQ:WIMI)研究拜占庭容错联邦学习算法,数据安全与隐私保护的双重保障
算法
qq_4171292519 小时前
C++中的桥接模式变体
开发语言·c++·算法
YuTaoShao20 小时前
【LeetCode 每日一题】3010. 将数组分成最小总代价的子数组 I——(解法二)排序
算法·leetcode·排序算法
吴维炜21 小时前
「Python算法」计费引擎系统SKILL.md
python·算法·agent·skill.md·vb coding
Σίσυφος19001 天前
PCL Point-to-Point ICP详解
人工智能·算法
玄〤1 天前
Java 大数据量输入输出优化方案详解:从 Scanner 到手写快读(含漫画解析)
java·开发语言·笔记·算法
weixin_395448911 天前
main.c_cursor_0202
前端·网络·算法
senijusene1 天前
数据结构与算法:队列与树形结构详细总结
开发语言·数据结构·算法