贪心入门——独木舟问题
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;
}
贪心入门——独木舟问题相关推荐
- ACM-2037今年暑假不AC(贪心入门)
A - 今年暑假不AC Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit ...
- 牛客寒假算法基础集训营2:处女座的期末复习(贪心入门)
链接:https://ac.nowcoder.com/acm/contest/327/J 来源:牛客网 ** 题目描述 ** 快要期末考试了,处女座现在有n门课程需要考试,每一门课程需要花ai小时进行 ...
- 贪心入门——出租车费
问题 B: 出租车费 时间限制: 1 Sec 内存限制: 32 MB 提交: 6 解决: 6 [提交][状态][讨论版] 题目描述 某市出租车计价规则如下:起步4公里10元,即使你的行程没超过4公里: ...
- 贪心入门+10道例题+解析代码
- 贪心入门案例(三)---------乘船问题
乘船
- 《算法竞赛入门经典——训练指南》第一章相关内容
#<算法竞赛入门经典--训练指南>第一章相关内容 希望各位大牛能指导! 红色为已经做了的...黄色背景是还有不懂地方,希望在年前能刷完第一章啊.... 更新版.google上貌似又加了ex ...
- html设置文本域的,HTML-文本域属性设置
1.设置文本域的字体 输入内容 2.设置文本域的背景色 输入内容 3.文本域的虚线边框设置 输入内容 4.文本域的实线边框设置 输入内容 5.文本域的点线边框设置 输入内容 6. 设置文本域的背景图 ...
- 八月五日个人训练记录
一.cf补题 1.C. Robot in a Hallway 参考 利用dp先把每一个位置往前走到末尾再绕回来到达下面(或上面)位置所需要的最小时间求出,然后假设这个点之前走蛇形,这个点之后走直线,去 ...
- $vjudge-$基本算法专题题解
考完期末又双叒回来刷普及题辣$kk$ 然后放个链接趴还是$QwQ$ [X]$A$ 因为是嘤文($bushi$所以放个题意趴$QwQ$ 就汉诺塔问题,只是说有四个塔$A,B,C,D$,要求输出有1-12 ...
最新文章
- Divan and Kostomuksha (easy version) dp,gcd(2100)
- 以Drools5.5为例说明“规则引擎在业务系统中应用”---起始篇
- 根据时间戳 统计每天用户的金额总数
- 【kafka】消费组 死掉 kafka Marking the coordinator dead for group
- caffe中的fine-tuning
- Security+ 学习笔记33 主机安全
- failed building wheel for termcolor_【零基础学Python】For循环和RANGE()函数
- 电脑监控软件应该怎样安装?安装简单吗?
- python金融反欺诈-项目实战
- 一键重装win10换win7系统重装系统
- 通过Navicat for MySQL导入数据时,日期时间错误问题解决办法
- 如何快速定位出一个IP地址的归属地?——二分查找变体
- 常见字读音(粤语)---(2)
- 无人驾驶车辆运动规划方法综述
- 『政善治』Postman工具 — 18、NewMan的使用
- java消息队列mq_我爱java系列---【消息队列(rabbitmq)】
- [故事]只会写自己名字的港大院士(图)
- seo排名系统源码,矩阵系统源码,火剪系统源码
- springboot整合rocketMQ记录 实现发送普通消息,延时消息
- python求一元二次方程的解法_python进行二次方程式计算的实例讲解
热门文章
- 计算机中文件夹怎么上密码,文件夹怎么设置密码,详细教您如何给电脑上文件夹设置密码...
- ACCESS中写SQL语句时尽量把表名和字段名用中括号括起来
- SQL2012 management 打开提示无法创建窗口
- matlab2020b版本的安装包与下载教程
- PID控制器概述及python实现PID控制算法
- C++不好找工作?C++工作现在需求怎么样,如何应对
- 上反对下反对推理图_判断推理:巧解直言上下反对关系
- wps算账怎么用计算机,全国计算机等级考试一级教程——计算机基础及WPS Office应用(2021年版)...
- 轻量级城镇道路养护信息管理系统设计与实现
- 项目中的 fonts 文件夹中,怎么知道有什么图标呢?