P1094 纪念品分组
程序员文章站
2022-07-16 12:07:58
...
之前一直做一本通上面的题,最近改做洛古了。hhh
那么,先放几张图片高兴高兴
喜欢就点个赞呗!(逃
那么,进入正文
思路:
读入之后先用sort排序,然后用两个指针一起向中间走,每次选择都尽可能的让当前状态下最大的和最小的分在一组,如果不行就最大的单独分一组,这样贪心下来就是最少分的组了。
#include<iostream>
#include<algorithm>
using namespace std;
int a[30000],i,j;
int main()
{
int m,n;
int Minimum_number_of_groups=0;
cin>>m>>n;
for(i=0;i<n;i++)
cin>>a[i];
sort(a,a+n);//排序
i=0;j=n-1;
//最大与最小一组:
while(i<=j)
{
if(a[i]+a[j]<=m)
{
i++;
j--;
Minimum_number_of_groups++;
}
else
{
j--;
Minimum_number_of_groups++;
}
}
cout<<Minimum_number_of_groups;
return 0;
}
下一篇: 背包M 背包