首页 > 其他分享 >[2007年NOIP普及组] 纪念品分组

[2007年NOIP普及组] 纪念品分组

时间:2022-08-16 11:57:11浏览次数:64  
标签:纪念品 NOIP int bj ++ 2007

[2007年NOIP普及组] 纪念品分组

思路:运用贪心算法。将纪念品按价格排序,然后一前一后两两组队,如果没有超过上限w,就组队成功;反之,就失败,较大的一个单独成一组,较小的再等别的来组队。最后输出总队数。

代码如下:

#include<bits/stdc++.h>

using namespace std;

int n,w,i,a[30010],s=0,j;

int main()

{

  cin>>w>>n;

  for(i=1;i<=n;i++)

    cin>>a[i];

  sort(a+1,a+n+1,greater<int>());//降序排列

  int bj=n;

  for(i=1;i<=n;i++)

   { if(a[i]==0)//特殊情况

      break;

  if(i==bj)//当只剩最后一个时

  {

   s++;

   break;

  }

  if(a[i]+a[bj]<=w)//可以两个一组时

   {

   a[i]=0;

   a[bj]=0;

   s++;

   bj--;

   }

  else//一个一组

   {

   a[i]=0;//让较大的为一组

   s++;

   }

  }

  cout<<s;

}

标签:纪念品,NOIP,int,bj,++,2007
From: https://www.cnblogs.com/xdzxyingrui/p/16591065.html

相关文章

  • [2002年NOIP提高组] 均分纸牌
    [2002年NOIP提高组]均分纸牌思路:贪心算法。将n堆纸牌的平均数算出来,将每堆纸牌i与平均数的差值转到i+1堆纸牌上,每操作一步,计数器+1。最后输出操作步数就好。代码如下:#i......
  • [2002年NOIP提高组] 均分纸牌
    [2002年NOIP提高组]均分纸牌分析:根据题意,先求所有数字的平均数,然后遍历数字与平均数比较,如果大于平均数,那么后一堆纸牌加上前一堆纸牌多出来的,同时步数+1,反之如果小于平......
  • [NOIP2007 普及组] 纪念品分组
    题目链接:https://www.luogu.com.cn/problem/P1094试题分析:乐乐要进行分组,分组原则是一个组中最多两个数,且两数之和小于给定的上限值,乐乐想找到最少能分多少组。我们发现,这......
  • [2007年NOIP普及组] 纪念品分组
    分析:因为最多两个一组,所以可以按最大的和最小的一组,是否满足条件,如果满足,同时赋值0,.#include<bits/stdc++.h>usingnamespacestd;intn,m,i,a[300000],s=0,j;intmain()......
  • [NOIP2002 提高组] 均分纸牌
    题目链接:https://www.luogu.com.cn/problem/P1031试题分析:首先分析样例:输入样例后,我们要先求出平均值,进而求出与平均值的差值: 我们能够得到三次移动:1.  7向右-4变......
  • [2002年NOIP提高组] 均分纸牌
    分析:每次移动都需要将其补全或删掉,如果这个正好是平均数,则步骤次数不增加98176-1-27-40-34-4004-40000#include<bits/stdc++.h>usingnamespacestd;......
  • [2013年NOIP提高组] 积木大赛
    [2013年NOIP提高组]积木大赛思路:只需要进行n次循环,(两个数之间,如果后面的数大于前面的)用后面的数-前面的差值累加,就能得出操作次数啦~代码如下:#include<iostream>#incl......
  • [2004年NOIP普及组] FBI树
    [2004年NOIP普及组]FBI树思路:运用递归。已知“0”和“1”组成的字符串分为三类:全“0”串称为B串,全“1”串称为I串,既含“0”又含“1”的串则称为F串。写一个后序遍历的函......
  • [2001年NOIP普及组] 数的计算
    我们要求找出具有下列性质数的个数(包含输入的自然数n):先输入一个自然数n(n<=1000),然后对此自然数按照如下方法进行处理:1.不作任何处理;2.在它的左边加上一个自然数,但......
  • NC16681 [NOIP2003]加分二叉树
    题目链接题目题目描述​设一个n个节点的二叉树tree的中序遍历为(l,2,3,…,n),其中数字1,2,3,…,n为节点编号。每个节点都有一个分数(均为正整数),记第j个节点的分数为di,t......