NC16640-纪念品分组
题目链接:https://ac.nowcoder.com/acm/problem/16640
题意:给定一个数值m和n个数,把n个数分组,要求每组最多包括两个数,每组和小于m,求最少分组数。
思路:贪心+双指针,注意l和r边界判断
#include<iostream>
#include<algorithm>
using namespace std;
int a[(int)3e4+5];
int main (){
int n,m;
cin>>m>>n;
for(int i=0;i<n;i++)
cin>>a[i];
sort(a,a+n,greater<int>());
int l=0,r=n-1;
for(;l<n-1;l++){
if(l<r&&a[l]+a[r]<=m)r--;
if(l>=r)break;
}
cout<<l+1;
return 0;
}

浙公网安备 33010602011771号