n个人,已知每个人体重,独木舟承重固定,每只独木舟最多坐两个人,可以坐一个人或者两个人。显然要求总重量不超过独木舟承重,假设每个人体重也不超过独木舟承重,问最少需要几只独木舟?

分析:

一个显然的策略是按照人的体重排序。

极端化贪心策略,最重的人要上船——如果最重的人和最轻的人体重总和不超过船的承重,则他们两个占用一条船。否则(因为假设最重的人的体重也不超过船的承重了),最重的人单独占一条船。转变为(n – 1)或者(n – 2)的问题了。

关键在于这种贪心策略是正确的。我们可以证明,最优解也可以变为这种策略。

(1) 假设最重的人和最轻的人的体重和超过了船的承重,那么最优解中,显然也是最重的人单独占一条船,所以这种情况下最优解和贪心策略是相同的。

收起


最后,我们来提供输入输出数据,由你来写一段程序,实现这个算法,只有写出了正确的程序,才能继续后面的课程。

输入

第一行包含两个正整数n (0<n<=10000)和m (0<m<=2000000000),表示人数和独木舟的承重。
接下来n行,每行一个正整数,表示每个人的体重。体重不超过1000000000,并且每个人的体重不超过m。

输出

一行一个整数表示最少需要的独木舟数。

输入示例

3 6
1
2
3

输出示例

2

入门题,直接上代码吧

#include<iostream>
#include<vector>
#include<string>
#include<cstring>
#include<cmath>
#include <algorithm>
#include <stdlib.h>
#include <cstdio>
#include<sstream>
#include<cctype>
#include <set>
#include<queue>
#include <map>
#include <iomanip>
typedef long long ll;
using namespace std;
ll ans[10100];
int main()
{ll n,m;cin>>n>>m;for(ll i=0;i<n;i++){cin>>ans[i];}ll sum=0;ll k=0,l=n-1;sort(ans,ans+n);while(k<l){if(ans[k]+ans[l]<=m)  {k++,l--;sum++;}else  {sum++;l--;}}if(l==k) sum++;//注意,当l==k跳出,但是还剩下一个人cout<<sum;
}

贪心入门——独木舟问题相关推荐

  1. ACM-2037今年暑假不AC(贪心入门)

    A - 今年暑假不AC Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit  ...

  2. 牛客寒假算法基础集训营2:处女座的期末复习(贪心入门)

    链接:https://ac.nowcoder.com/acm/contest/327/J 来源:牛客网 ** 题目描述 ** 快要期末考试了,处女座现在有n门课程需要考试,每一门课程需要花ai小时进行 ...

  3. 贪心入门——出租车费

    问题 B: 出租车费 时间限制: 1 Sec 内存限制: 32 MB 提交: 6 解决: 6 [提交][状态][讨论版] 题目描述 某市出租车计价规则如下:起步4公里10元,即使你的行程没超过4公里: ...

  4. 贪心入门+10道例题+解析代码

  5. 贪心入门案例(三)---------乘船问题

    乘船

  6. 《算法竞赛入门经典——训练指南》第一章相关内容

    #<算法竞赛入门经典--训练指南>第一章相关内容 希望各位大牛能指导! 红色为已经做了的...黄色背景是还有不懂地方,希望在年前能刷完第一章啊.... 更新版.google上貌似又加了ex ...

  7. html设置文本域的,HTML-文本域属性设置

    1.设置文本域的字体 输入内容 2.设置文本域的背景色 输入内容 3.文本域的虚线边框设置 输入内容 4.文本域的实线边框设置 输入内容 5.文本域的点线边框设置 输入内容 6. 设置文本域的背景图 ...

  8. 八月五日个人训练记录

    一.cf补题 1.C. Robot in a Hallway 参考 利用dp先把每一个位置往前走到末尾再绕回来到达下面(或上面)位置所需要的最小时间求出,然后假设这个点之前走蛇形,这个点之后走直线,去 ...

  9. $vjudge-$基本算法专题题解

    考完期末又双叒回来刷普及题辣$kk$ 然后放个链接趴还是$QwQ$ [X]$A$ 因为是嘤文($bushi$所以放个题意趴$QwQ$ 就汉诺塔问题,只是说有四个塔$A,B,C,D$,要求输出有1-12 ...

最新文章

  1. Divan and Kostomuksha (easy version) dp,gcd(2100)
  2. 以Drools5.5为例说明“规则引擎在业务系统中应用”---起始篇
  3. 根据时间戳 统计每天用户的金额总数
  4. 【kafka】消费组 死掉 kafka Marking the coordinator dead for group
  5. caffe中的fine-tuning
  6. Security+ 学习笔记33 主机安全
  7. failed building wheel for termcolor_【零基础学Python】For循环和RANGE()函数
  8. 电脑监控软件应该怎样安装?安装简单吗?
  9. python金融反欺诈-项目实战
  10. 一键重装win10换win7系统重装系统
  11. 通过Navicat for MySQL导入数据时,日期时间错误问题解决办法
  12. 如何快速定位出一个IP地址的归属地?——二分查找变体
  13. 常见字读音(粤语)---(2)
  14. 无人驾驶车辆运动规划方法综述
  15. 『政善治』Postman工具 — 18、NewMan的使用
  16. java消息队列mq_我爱java系列---【消息队列(rabbitmq)】
  17. [故事]只会写自己名字的港大院士(图)
  18. seo排名系统源码,矩阵系统源码,火剪系统源码
  19. springboot整合rocketMQ记录 实现发送普通消息,延时消息
  20. python求一元二次方程的解法_python进行二次方程式计算的实例讲解

热门文章

  1. 计算机中文件夹怎么上密码,文件夹怎么设置密码,详细教您如何给电脑上文件夹设置密码...
  2. ACCESS中写SQL语句时尽量把表名和字段名用中括号括起来
  3. SQL2012 management 打开提示无法创建窗口
  4. matlab2020b版本的安装包与下载教程
  5. PID控制器概述及python实现PID控制算法
  6. C++不好找工作?C++工作现在需求怎么样,如何应对
  7. 上反对下反对推理图_判断推理:巧解直言上下反对关系
  8. wps算账怎么用计算机,全国计算机等级考试一级教程——计算机基础及WPS Office应用(2021年版)...
  9. 轻量级城镇道路养护信息管理系统设计与实现
  10. 项目中的 fonts 文件夹中,怎么知道有什么图标呢?