P1094 [NOIP2007 普及组] 纪念品分组 贪心

P1094 [NOIP2007 普及组] 纪念品分组
如果当前的最小物品+最大物品不超过上限,这两个物品合并,如果不行最大物品只能单独为一件不能与其它的任何一个合并,这样合并最后就是最少的分组。本题用到的知识点有,排序,双指针,贪心思想。

//P1094 纪念品分组
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
vector <int> jkp;
int w,n;
int main()
{
	cin>>w;
	cin>>n;
	for (int i=1;i<=n;i++)
	{
		int x;
		cin>>x;
		jkp.push_back(x);
	}
	sort(jkp.begin(),jkp.end());
	int i=0,j=jkp.size()-1;
	int ans=0;
	while(i<=j)
	{
		if (jkp[i]+jkp[j]<=w)
		{
			ans++;i++;j--;
		}
		else
		{
			ans++;j--;
		}
	}
	cout<<ans<<endl;
	return 0;
}

  

posted @ 2022-03-08 08:23  心悟&&星际  阅读(87)  评论(0编辑  收藏  举报