题解-纪念品分组

纪念品分组(题解) 题目描述 元旦快到了,校学生会让乐乐负责新年晚会的纪念品发放工作。为使得参加晚会的同学所获得 的纪念品价值相对均衡,他要把购来的纪念品根据价格进行分组,但每组最多只能包括两件纪念品, 并且每组纪念品的价格之和不能超过一个给定的整数。为了保证在尽量短的时间内发完所有纪念品,乐乐希望分组的数目最少。 你的任务是写一个程序,找出所有分组方案中分组数最少的一种,输出最少的分组数目。 输入 输入文件包含n+... 阅读详情

纪念品分组

题目描述
元旦快到了,校学生会让乐乐负责新年晚会的纪念品发放工作。为使得参加晚会的同学所获得 的纪念品价值相对均衡,他要把购来的纪念品根据价格进行分组,但每组最多只能包括两件纪念品, 并且每组纪念品的价格之和不能超过一个给定的整数。为了保证在尽量短的时间内发完所有纪念品,乐乐希望分组的数目最少。

你的任务是写一个程序,找出所有分组方案中分组数最少的一种,输出最少的分组数目。

输入输出格式
输入格式:
共n+2行:

第1行包括一个整数w,为每组纪念品价格之和的上限。

第2行为一个整数n,表示购来的纪念品的总件数G。

第3至n+2行每行包含一个正整数P_i(5 \le P_i \le w)表示所对应纪念品的价格。

输出格式:
一个整数,即最少的分组数目。

输入输出样例
输入样例#1:
100
9
90
20
20
30
50
60
70
80
90
输出样例#1:
6
说明
50%的数据满足:1 \le n \le 151≤n≤15
100%的数据满足:1 \le n \le 30000,80 \le w \le 2001≤n≤30000,80≤w≤200
题目分析:是道比较完美的贪心。两个成为一组,实际求最优解。
这道题贪心思想主要是包括:

  • 先排序(直接sort),再用枚举方法写出一个函数,来处理分组搭配。
  • 用你选中的两个值的和与上限值比一比,再写出判断情况。
  • 再看看装不装的下其他更大的数,装的下就增加下标,则小的那一个小标减少1。
  • 放进去组数加一,可以判断大的加小的与只有一组大的情况来统计。

简单来说,就是将其中一个排序后一一对应,无论是两组还是单独成组。
在这里插入图片描述

代码路程:
1.代码基本核心

int f(int l,int r){//纪念品的下标 
	l=0;r=n-1;//l表示纪念品的最小价值,r表示纪念品的最大价值 
	while(l<=r){
		if(a[l]+a[r]<=w){//大的加小的为单独一组,没有分完就继续分 
			l++;//否则小的增加一位 
			r--;//大的减少一位 
			ans++;
		}else{ //大的放不下单独成为一组 
			r--;
			ans++;
		}
	}
	return ans;
}

//闲着,函数与什么都可以套用。(具体见注释)。
2.注意(问题中的值可能较大,w<=30000),最好开一个较大的数组来储存:

int a[1000000]

//不管多大,保险。
代码展示:

#include<bits/stdc++.h>
using namespace std;
int a[1000000],ans=0;
int w,n;
int f(int l,int r){//纪念品的下标 
	l=0;r=n-1;//l表示纪念品的最小价值,r表示纪念品的最大价值 
	while(l<=r){
		if(a[l]+a[r]<=w){//大的加小的为单独一组,没有分完就继续分 
			l++;//否则小的增加一位 
			r--;//大的减少一位 
			ans++;
		}else{ //大的放不下单独成为一组 
			r--;
			ans++;
		}
	}
	return ans;
}
int main(){
	cin>>w>>n;
	for(int i=0;i<n;i++){
		cin>>a[i];
	}
	sort(a,a+n);
	cout<<f(w,n);
	return 0;
}

相关题目:

https://www.luogu.org/problemnew/show/P1803

题解:洛谷 P1094 [NOIP 2007 普及组] 纪念品分组 为使得参加晚会的同学所获得的纪念品价值相对均衡,他要把购来的纪念品根据价格进行分组,但每组最多只能包括两件纪念品, 并且每组纪念品的价格之和不能超过一个给定的整数。为了保证在尽量短的时间内发完所有纪念品,乐乐希望分组的数目最少。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。你的任务是写一个程序,找出所有分组方案中分组数最少的一种,输出最少的分组数目。,表示购来的纪念品的总件数。一个整数,即最少的分组数目。表示所对应纪念品的价格。#普及-# #贪心# 阅读详情

相关推荐

acm竞赛题之一 纪念品发放事件

纪念品根据价格进行分组,但每组最多只能包括两件纪念品,并且每组纪念品的价格之和不能超过一个给定的整数。要求分组的数目最少。

纪念品分组 题解

纪念品分组 题解 纪念品分组链接地址。 本题是一个简单的 双指针 + 贪心 的思路 贪心的思路就是 在两个商品的价值和不超过 www 的前提下, 把其中的最大的和最小的分为一组,次大的和次小的分为一组,这样一直分就会得到一个最小分组数。 //本题核心思路 排序 + 双指针 + 模拟 //算法思路:把一个大的和一个小的分为一组,这样的分法一定会是最小的 #include<iostream> #include<algorithm> using namespace std; const

weixin_61839423的博客 477

风控IV、AUC、KS python计算代码

df_temp:数据集,Y:是否逾期标签,feas_list:需要计算IV的 变量。2、 按月和不同Y 下的 IV计算。

暮雨听轩的专栏 1618

蓝桥杯 纪念品分组(贪心,排序)

元旦快到了,校学生会让乐乐负责新年晚会的纪念品发放工作。为使得参加晚会的同学所获得的纪念品价值相对均衡,他要把购来的纪念品根据价格进行分组,但每组最多只能包括两件纪念品,并且每组纪念品的价格之和不能超过一个给定的整数。为了保证在尽量短的时间内发完所有纪念品,乐乐希望分组的数目最少。你的任务是写一个程序,找出所有分组方案中分组数最少的一种,输出最少的分组数目。

晴空๓ 840

用Docker-Compose三节点部署生产级Doris集群:从配置文件到故障转移

本文详细介绍了如何使用Docker-Compose部署一个生产级的三节点Apache Doris集群。内容涵盖从核心架构理解、配置文件编写到集群初始化验证的全过程,并重点讲解了如何实现高可用、数据持久化、健康检查以及故障转移等生产级运维关键点,为中小团队提供了一种在容器化便利性与系统稳定性间取得平衡的可靠部署方案。

kkk56的博客 856

如何在Tagetik系统中抽取处理SAP系统财务数据

如何在Tagetik系统中抽取处理不同核算系统财务数据:以SAP为例,简单讲一下Tagetik对接SAP数据的基本情况

2201_75401663的博客 577

Vijos 1409-纪念品分组【贪心】

元旦快到了,校学生会让乐乐负责新年晚会的纪念品发放工作。为使得参加晚会的同学所获得 的纪念品价值相对均衡,他要把购来的纪念品根据价格进行分组,但每组最多只能包括两件纪念品, 并且每组纪念品的价格之和不能超过一个给定的整数。为了保证在尽量短的时间内发完所有纪念品,乐乐希望分组的数目最少。 你的任务是写一个程序,找出所有分组方案中分组数最少的一种,输出最少的分组数目。

小I的博客 1235

1553B通信项目开发笔记(一)协议概述

最近接了个项目,需要用1553B协议通信,仅作为RT端口进行通信,控制器采用ARM 使用芯片为国产的BU61580芯片,功能和引脚和DDC的61580完全一致。

u010396127的博客 2万+

刷题记录:NC16640[NOIP2007]纪念品分组

刷题记录:NC16640[NOIP2007]纪念品分组

yingjiayu12的博客 198

基于ESP32的AI 古琴:基于音频指纹的民族乐器智能校准系统设计与实现

硬件选型兼顾实用性与低成本,接线简单易实现;基于 MFCC 的音频指纹算法,能有效识别古琴弦的音高特征;人机交互友好,新手可快速上手。

weixin_42300449的博客 306

2024年数字IC秋招-睿思芯科-IC验证工程师-笔试题

公司介绍:初创公司,做risc-v,公司位于深圳笔试题型:基础题(10个) + 选做题(5个)笔试平台:showmebug(电脑监控)笔试时间:1h个人感受:每年rsxk的题目好像是一样的,起码今年和去年的题目是相同的,但是做完笔试题目就没有消息了。

qq_42135020的博客 1582

CSP-J2007-纪念品分组

贪心

weixin_60869516的博客 613

华为OD机试真题 新系统2026-04-01 Python&JS 实现【空间占用计算】

员工A的磁盘空间经常被耗尽,他需要找到占用空间最大的目录或文件,然后决定如何清理文件释放空间。给定某一目录,请编写程序帮助他统计该目录内一级子目录和文件的占用空间,并返回目标目录一级子项(文件或子目录)中占用空间最大的项。

MISAYAONE的博客 1298

【题解】纪念品分组

题目描述 元旦快到了,校学生会让乐乐负责新年晚会的纪念品发放工作。为使得参加晚会的同学所获得的纪念品价值相对均衡,他要把购来的纪念品根据价格进行分组,但每组最多只能包括两件纪念品,并且每组纪念品的价格之和不能超过一个给定的整数。为了保证在尽量短的时间内发完所有纪念品,乐乐希望分组的数目最少。 你的任务是写一个程序,找出所有分组方案中分组数最少的一种,输出最少的...

weixin_30636089的博客 297

科研问答:医药类本科生(临床、中医、中药与护理)本科阶段是否需要开展科研学习?

医药类本科生(临床、中医、中药与护理)本科阶段是否需要开展科研学习?

MD Code 1507

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

[题解]洛谷P1094——纪念品分组

原题链接: https://www.luogu.org/problem/P1094 题目简述: 有NNN件纪念品,每个纪念品都有特定的价格,要求将他们分组,每组纪念品之和不得超过MMM,并且每组最多只能包含2件纪念品,请找出所有分组方案中最少的一个,并输出。 思路及代码: 读入后从小到大排序。 定义指针i j,并且i = 0,j = n-1,每次将a[i] ,a[j]相加,如果结果<m,就将...

硅谷小蛙的技术博客 1073

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

洛谷 P1094 [NOIP 2007 普及组] 纪念品分组 题解

这篇文章介绍了NOIP2007普及组的一道题目《纪念品分组》。题目要求将n个纪念品分组,每组最多两件且价格之和不超过给定值w,求最少分组数。作者使用贪心算法,通过将最大的数与最小的数配对,确保每组价值均衡。给出的C++代码实现了这一策略:先降序排序纪念品价格,然后为每个未被分组的物品寻找合适的配对,最后统计最少分组数。文章强调理解题意是关键,掌握贪心策略后解题会更容易。

zhangch01的博客 797

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

P1094 [NOIP2007 普及组] 纪念品分组 题解

P1094 [NOIP2007 普及组] 纪念品分组 题解

yaosichengalpha的博客 1216

纪念品分组题解:

题目描述: 元旦快到了,校学生会让乐乐负责新年晚会的纪念品发放工作。为使得参加晚会的同学所获得的纪念品价值相对均衡,他要把购来的纪念品根据价格进行分组,但每组最多只能包括两件纪念品,并且每组纪念品的价格之和不能超过一个给定的整数。为了保证在尽量短的时间内发完所有纪念品,乐乐希望分组的数目最少。 你的任务是写一个程序,找出所有分组方案中分组数最少的一种,输出最少的分组数目。 input 10...

qq_43047178的博客 272

【题解】【洛谷P1094】【贪心】—— [NOIP2007 普及组] 纪念品分组

本平台利用趣味性和互动性强的教学方式,旨在激发孩子们对编程的兴趣,培养他们的逻辑思维能力和创造力,让孩子们在轻松愉快的氛围中掌握编程知识,为未来科技人才的培养奠定坚实基础。为使得参加晚会的同学所获得 的纪念品价值相对均衡,他要把购来的纪念品根据价格进行分组,但每组最多只能包括两件纪念品, 并且每组纪念品的价格之和不能超过一个给定的整数。通俗点说,较大的数已经占据了较大的空间,再放次大的数放进去的几率很小。你的任务是写一个程序,找出所有分组方案中分组数最少的一种,输出最少的分组数目。它们两个原理是一样的。

Pantheraonca的博客 2559

NOIP2007完整题解(奖学金,纪念品分组,守望者的逃离,Hanoi双塔问题)

全NOIP2007题解!!!

cgj0128_1的博客 1469

[LGOJ] 题解 P1094 【纪念品分组】

为使得参加晚会的同学所获得 的纪念品价值相对均衡,他要把购来的纪念品根据价 格进行分组,但每组最多只能包括两件纪念品, 并且每组纪念品的价格之和不能超 过一个给定的整数。为了保证在尽量短的时间内发完所有纪念品,乐乐希望分组的 数目最少。 你的任务是写一个程序,找出所有分组方案中分组数最少的一种,输出最少的分组数目。 输入格式: 共n+2n+2行: 第1行包括一个整数w,为每组纪念品价格之和的...

二班的蒟蒻/CT_Res的blog 326

[NOIP2007 普及组] 纪念品分组题解

因为 K>X,且二者贪心选择产生分组数是一样的,得 K>X, 与 K 是最优解相互矛盾,得贪心选择+子问题的最优解就是全局最优解。为使得参加晚会的同学所获得 的纪念品价值相对均衡,他要把购来的纪念品根据价格进行分组,但每组最多只能包括两件纪念品, 并且每组纪念品的价格之和不能超过一个给定的整数。读入后用sort排序,用两个指针向中间走,每次选择都让当前状态下最大的和最小的分在一组,否则就最大的分一组,这样下来是最少分的组了。你的任务是写一个程序,找出所有分组方案中分组数最少的一种,输出最少的分组数目。...

m0_57362922的博客 257

java 蓝桥杯算法训练 纪念品分组(题解)

试题 算法训练 纪念品分组 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述   元旦快到了,校学生会让乐乐负责新年晚会的纪念品发放工作。为使得参加晚会的同学所获得的纪念品价值 相对均衡,他要把购来的纪念品根据价格进行分组,但每组最多只能包括两件纪念品,并且每组纪念品的价格之和不能超过一个给定的整数。为了保证在尽量短的时 间内发完所有纪念品,乐乐希望分组的数目最少。   你的任...

weixin_43887915的博客 611

题解P1094 [NOIP2007 普及组] 纪念品分组

贪心算法

2201_75336957的博客 987

【题解】洛谷P1094纪念品分组[NOIP2007普及] 贪心

题目链接 #include&amp;lt;cstdio&amp;gt; #include&amp;lt;algorithm&amp;gt; using namespace std; int a[50000],b[50000]; int cmp(const int&amp;amp;a,const int&amp;amp;b){ return a&amp;gt;=b; } int main(){ int cnt=0,j,x,sum,i,w

翻过这座山,他们就会听到你的故事 880
上一篇: 题解-守望者的逃离
下一篇: 题解-Hnoi1995 资源分配
Cancelleds
博客等级 码龄8年 1110粉丝 166原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值