洛谷P1094 [NOIP2007]纪念品分组

题目传送门


分析:要使礼物更加平均,分的份数尽量少,且礼物价值不超过上限,我们很容易想到先从小到大排序。

然后让最小的和最大的在一组,如果最小的和最大的无法在一组,那么只能让最大的自己一组。

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>

using namespace std;

int n,a[30005];
int cnt,m;
bool vis[30005];

int main()
{
    scanf("%d%d",&m,&n);
    for(int i=1;i<=n;i++)
        scanf("%d",&a[i]);
    sort(a+1,a+n+1);
    int i=1,j=n;
    while(i<=j)
    {
        if(a[i]+a[j]<=m)
        {
            cnt++;
            i++;
            j--;
        }
        else
        {
            cnt++;
            j--;
        }
    }
    printf("%d\n",cnt);
    return 0;
} #include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>

using namespace std;

int n,a[30005];
int cnt,m;
bool vis[30005];

int main()
{
    scanf("%d%d",&m,&n);
    for(int i=1;i<=n;i++)
        scanf("%d",&a[i]);
    sort(a+1,a+n+1);
    int i=1,j=n;
    while(i<=j)
    {
        if(a[i]+a[j]<=m)
        {
            cnt++;
            i++;
            j--;
        }
        else
        {
            cnt++;
            j--;
        }
    }
    printf("%d\n",cnt);
    return 0;
} 
View Code

猜你喜欢

转载自www.cnblogs.com/Hoyoak/p/11348234.html
今日推荐