洛谷 P1094 纪念品分组【贪心/双指针/最少多少组合法不要求连续的两两捆绑】
题目描述
元旦快到了,校学生会让乐乐负责新年晚会的纪念品发放工作。为使得参加晚会的同学所获得 的纪念品价值相对均衡,他要把购来的纪念品根据价格进行分组,但每组最多只能包括两件纪念品, 并且每组纪念品的价格之和不能超过一个给定的整数。为了保证在尽量短的时间内发完所有纪念品,乐乐希望分组的数目最少。
你的任务是写一个程序,找出所有分组方案中分组数最少的一种,输出最少的分组数目。
输入输出格式
输入格式:
输入文件group.in包含n+2行:
第1行包括一个整数w,为每组纪念品价格之和的上上限。
第2行为一个整数n,表示购来的纪念品的总件数G
第3~n+2行每行包含一个正整数Pi (5 <= Pi <= w)表示所对应纪念品的价格。
输出格式:
输出文件group.out仅一行,包含一个整数,即最少的分组数目。
输入输出样例
说明
50%的数据满足:1<=n<=15
100%的数据满足:1<=n<=30000,80<=w<=200
【分析】:先升序排序,尽量将最大最小的两个捆绑在一起,设置一前一尾双指针进行移动,直到i>j
【代码】:
#include <bits/stdc++.h> using namespace std; const int N = +;
int lim,n,a[N],cnt;
int main()
{
ios::sync_with_stdio(false);
cin>>lim;
cin>>n;
for(int i=;i<=n;i++)
{
cin>>a[i];
}
sort(a+,a+n+);
cnt=;
int i=,j=n;
while(i<=j)
{
if(a[i]+a[j]>lim)
{
cnt++;
j--;
}
else
{
cnt++;
i++;
j--;
}
}
cout<<cnt<<endl;
return ;
}
//20 20 30 50 60 70 80 90 90 //cnt 0+1+1+1+1+1
// i j
洛谷 P1094 纪念品分组【贪心/双指针/最少多少组合法不要求连续的两两捆绑】的更多相关文章
- 洛谷 P1094 纪念品分组
P1094 纪念品分组 先按价格对纪念品排序(这里是从大到小),然后从两端向中心开始配对,有两个变量i和j,表示正在处理的两个纪念品编号,开始时i=1,j=n,如果a[i]+a[j]>w则第i贵 ...
- 洛谷P1094——纪念品分组(简单贪心)
https://www.luogu.org/problem/show?pid=1094 题目描述 元旦快到了,校学生会让乐乐负责新年晚会的纪念品发放工作.为使得参加晚会的同学所获得 的纪念品价值相对均 ...
- [题解]洛谷P1094——纪念品分组
原题链接: https://www.luogu.org/problem/P1094 题目简述: 有NNN件纪念品,每个纪念品都有特定的价格,要求将他们分组,每组纪念品之和不得超过MMM,并且每组最多只 ...
- 洛谷——P1094 纪念品分组
https://www.luogu.org/problem/show?pid=1094#sub 题目描述 元旦快到了,校学生会让乐乐负责新年晚会的纪念品发放工作.为使得参加晚会的同学所获得 的纪念品价 ...
- 洛谷P1094纪念品分组 题解
题目传送门 首先的思路就是贪心.先将所有的纪念品按照价格从低到高进行排序.在分别从左到右.从右到左合并纪念品.如果两端纪念品价格超过了上上限,那么就将较大的那一个纪念品独自放入.否则将两个纪念品一起放 ...
- 洛谷 P1094 纪念品分类
刚开始看到这题就确定这题最好先要排序 第一个想法是排好序后先让第一个和从倒数第一个开始相加和如果就 <= w,那么用n除以2或者再加一得出答案,然后发现随便 当w = 110 n = 5序列 ...
- P1094 纪念品分组
P1094 纪念品分组 题目描述 元旦快到了,校学生会让乐乐负责新年晚会的纪念品发放工作.为使得参加晚会的同学所获得 的纪念品价值相对均衡,他要把购来的纪念品根据价格进行分组,但每组最多只能包括两件纪 ...
- 洛谷 P1023 税收与补贴问题 (2000NOIP提高组)
洛谷 P1023 税收与补贴问题 (2000NOIP提高组) 题意分析 一开始没理解题意.啰啰嗦嗦一大堆.看了别人的题解才明白啥意思. 对于样例来说,简而言之: 首先可以根据题目推算出来 28 130 ...
- 洛谷 P1109 学生分组
P1109 学生分组 题目描述 有N组学生,给出初始时每组中的学生个数,再给出每组学生人数的上界R和下界L(L<=R),每次你可以在某组中选出一个学生把他安排到另外一组中,问最少要多少次才可以使 ...
随机推荐
- webstrom11 vue插件配置
直接上图 1. 安装vue插件 2.添加模板 3.指定模板类型 最新的是插件 是 vue.js 创建完 Vue File 文件后 需要在 下面这里关联一下
- [译]14-spring 集合元素的注入
前面的文章已经介绍了如何往bean里面注入原始类型和引用类型.我们使用bean元素的contructor-arg或property子 元素的value属性注入java原始类型;同理,我们可以使用bea ...
- 把SVN版本控制讲给 非IT同事 听
场景: 什么是版本: 什么是版本控制: 为什么要用版本控制: 推荐使用SVN: 如何快速理解SVN: SVN简单使用:
- 孤荷凌寒自学python第五十六天通过compass客户端和mongodb shell 命令来连接远端MongoDb数据库
孤荷凌寒自学python第五十六天通过compass客户端和mongodb shell 命令来连接远端MongoDb数据库 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第二 ...
- 【已解决】UBuntu16.04软件中心更新后只有桌面
出现问题之前 安装好系统之后,成功启动系统,根据软件中心提示,升级电脑安装的软件,如下图所示.点击install(安装)开始更新,之后无任何提示,其实这个时候已经出现了升级异常. 呈现问题 操作步骤一 ...
- Linux大小端模式转换函数
转自 http://www.cnblogs.com/kungfupanda/archive/2013/04/24/3040785.html 不同机器内部对变量的字节存储顺序不同,有的采用大端模式(bi ...
- Android Service完全解析
Service的基本用法 1.新建一个Android项目,新建一个MyService继承自Service,并重写父类的onCreate(),onStartCommand()方法和onDestory() ...
- 阻塞&&非阻塞
读常规文件是不会阻塞的,不管读多少字节,read一定会在有限的时间内返回.但是从终端设备或网络读则不一定,如果从终端输入的数据没有换行符,调用read读终端设备就会阻塞,如果网络上没有接收到数据包,调 ...
- 201621123033 《Java程序设计》第4周学习总结
1. 本周学习总结 1.1 写出你认为本周学习中比较重要的知识点关键词 父类 子类 继承 覆盖 抽象 1.2 尝试使用思维导图将这些关键词组织起来.注:思维导图一般不需要出现过多的字. 1.3 可选: ...
- hust 1605 bfs
思路:直接用优先队列优化bfs. #include<map> #include<queue> #include<vector> #include<cmath& ...