Description
PIPI参加志愿者活动去沙滩上捡垃圾,已知沙滩上有 N 堆垃圾,每个垃圾的重量为 L,PIPI的垃圾袋容量为 M,一个垃圾袋最多能装两个垃圾。问: PIPI最少需要多少个垃圾袋才能把垃圾全带走?

Input
第一行包含一个正整数T代表测试样例组数。
对于每组测试用例,第一行包含两个正整数 N和 M(N<=105,M<=109)。
第二行包含 N 个正整数代表每一个垃圾的重量L。

Output
对于每组样例,输出包含一个正整数代表最少需要的垃圾袋数目。除了最后一组样例,每两组样例间有一个空行。

Sample Input

1
3 2
1 2 2

Sample Output

3

参考程序

#include <stdio.h>
#include <algorithm>
#define LEN 100000
using namespace std;
int main()
{int T;scanf("%d",&T);while(T--){long long gar[LEN],cnt=0,N,M,i,j;scanf("%lld%lld",&N,&M);for(i=0;i<N;i++){scanf("%lld",&gar[i]);}sort(gar,gar+N);i=0,j=N-1;while(i<=j){if(i==j){cnt++;break;}if(gar[i]+gar[j]<=M){cnt++;i++;j--;}else{cnt++;j--;}}printf("%d\n",cnt);if(T){printf("\n");}}return 0;
}

本题使用了C++中的数组排序函数sort(),但主体还是使用C语言实现。本题使用贪心设计策略,首先将垃圾重量从小到大进行排序,初始化i=0,j=N-1。

  • 当gar[i]+gar[j]>M时,此时只能让gar[j]放在一个袋子里;
  • 当gar[i]+gar[j]≤M时,此时可以将gar[i]、gar[j]一起放在一个袋子里;
  • 最后如果只剩下一件垃圾,即i==j时,需要让gar[i]单独放在一个袋子里。

本题需要考虑大规模数据(数据大、数据量大)!

数据结构与算法33-PIPI捡垃圾相关推荐

  1. 《数据结构与算法之美》学习汇总

    此篇文章是对自己学习这门课程的一个总结和课后的一些练习,做一个汇总,希望对大家有帮助.本人是半路程序员,2018年2月开始学习C++的,下面的代码基本都是C++11版本的,代码有错误的地方请不吝留言赐 ...

  2. Java数据结构与算法 一

    整体框架: 算法 先简单 ==>做复杂,把复杂算法拆分成简单的问题 ==>解决问题 经典算法 1 字符串匹配 str1 = "nihdisoadisaoidhi" st ...

  3. mysql索引用trie树_数据结构与算法之美【完整版】

    资源目录: ├─01-开篇词 (1讲) │ ├─00丨开篇词丨从今天起,跨过"数据结构与算法"这道坎.html │ ├─00丨开篇词丨从今天起,跨过"数据结构与算法&qu ...

  4. 数据结构与算法(C语言)

    第一章: 数据结构绪论 1.什么是程序:程序 = 数据结构 + 算法 2.逻辑结构&物理结构的区别用法 基本的目标就是将数据及其逻辑关系存储到计算机的内存中 一:逻辑结构: 逻辑结构是指数据对 ...

  5. 《数据结构与算法之美》目录

    数据结构与算法之美_算法实战_算法面试 开篇词 (1讲) <数据结构与算法之美>学习指导手册 开篇词 | 从今天起,跨过"数据结构与算法"这道坎 入门篇 (4讲) 01 ...

  6. 数据结构与算法:22 精选练习50

    精选练习50 马上就要期末考试或者考研了.为了大家复习的方便,我精选了有关数据结构与算法的50道选择题,大家可以抽空练习一下.公众号后台回复"答案"可以获取该50道题目的答案. 0 ...

  7. 数据结构与算法的八股文自述(持续更新)

    数据结构与算法的八股文自述 1.1 排序算法 冒泡排序: 冒泡排序只会操作相邻的两个数据.每次冒泡操作都会对相邻的两个元素进行比较,看是否满足大小关系要求.如果不满足就让它俩互换.一次冒泡会让至少一个 ...

  8. 数据结构与算法笔记 - 绪论

    数据结构与算法笔记 - 绪论 1. 什么是计算 2. 评判DSA优劣的参照(直尺) 3. 度量DSA性能的尺度(刻度) 4. DSA的性能度量的方法 5. DSA性能的设计及其优化 x1. 理论模型与 ...

  9. 程序员求职成功路(2) - 第3章 数据结构与算法

    第3章 数据结构与算法 1. memmove边界问题 void memmove_(char *pDst,const char* pSrc,size_t size){     assert(pSrc!= ...

最新文章

  1. 深度解析:特斯拉的工厂为什么建造得这么快?
  2. centos 管道符取第一行_Linux用户组管理及用户权限及管道符应用
  3. Spring的REST服务发现性,第5部分
  4. 在idea中新建的text文件_开发属于自己的第一款 IDEA 插件!
  5. 猪八戒背媳妇用计算机弹出来,猪八戒背媳妇?杭城游泳馆爆笑一幕:浙大学霸果然机智!...
  6. Decrease (Judge ver.)
  7. 华中农业大学第五届程序设计大赛网络同步赛解题报告2(转)
  8. Spring 跨域问题CORS (Cross Origin Resources Share)
  9. Auto.js 读写txt文件
  10. Google 开发者账号关联被封后怎么办
  11. python函数里调用外部变量
  12. 求一段看不懂的乱码_这些真的不是乱码,是汉字!竟然一个都不认识
  13. java win7 管理员权限_win7系统获取管理员权限批处理的操作方法
  14. VR全景的拍摄以及优势
  15. 电子计算机上gt键的功能,请问计算器里的GT键是做什么用的
  16. 麻将判断几步入听算法
  17. 【日常学习】【数学】codevs3625 士兵站队问题题解
  18. 两个独立同分布的指数分布相加服从什么分布
  19. 苹果cmsv10好看的七色中文二开视频免费模板
  20. centos8修改网卡配置及应用

热门文章

  1. wps怎么将图片嵌入文字里_在WPS文字中插入图片
  2. .cfg\.dat\.mak(持续补充)
  3. Andriod 虚拟机
  4. OPERA-MS:宏基因组二、三代测序混合组装
  5. 【Writeup】2017陕西网络空间安全技术大赛CSTC misc部分
  6. Maximize The Beautiful Value (前缀和贪心)
  7. 如何利用工具低成本构建腾讯云灾备方案?
  8. 《人类简史》这本烧脑书风靡全球的秘密是什么?
  9. android时间控制器,android UiAutomator长按实现控制按住控件时间的方法
  10. VSTO中Word的查找方式