转载自:https://www.cnblogs.com/ALL-pp/p/6204138.html
题意:

N个人过河,船每次只能坐两个人,船载每个人过河的所需时间不同t[i],每次过河的时间为船上的人的较慢的那个,问最快的过河时间。(船划过去要有一个人划回来)

最优选择:

先将所有人过河所需的时间按照升序排序,我们考虑把单独过河所需要时间最多的两个旅行者(为什么是两个?因为最慢的过河的时候可以带着次慢的一起过河)送到对岸去,有两种方式:
  1.最快的和次快的过河,然后最快的将船划回来;次慢的和最慢的过河,然后次快的将船划回来,所需时间为:t[0]+2t[1]+t[n-1];
  2.最快的和最慢的过河,然后最快的将船划回来,最快的和次慢的过河,然后最快的将船划回来,所需时间为:2
t[0]+t[n-2]+t[n-1]。

#include<iostream>
#include<algorithm>
using namespace std;
bool compare(int a, int b)
{return a < b;
}int main()
{int n;while(cin >> n){int *a = new int[n];for(int i = 0; i < n; i++){cin >> a[i];}sort(a, a + n, compare);int sum = 0;while(n > 3){int less = a[0] + 2 * a[1] + a[n - 1];if((a[0] + 2 * a[1] + a[n - 1]) > (2 * a[0] + a[n - 2] + a[n - 1]))//两种方式选择less = 2 * a[0] + a[n - 2] + a[n - 1];sum += less;n -= 2;}if(n == 3){sum += (a[0] + a[1] + a[2]); //剩三人}else if(n == 2) //剩两人{sum += a[1];}else sum += a[0];//剩一人cout << sum << "\n";}return 0;
}

【转】小船过河问题(贪心)相关推荐

  1. 活动选择与小船过河问题(贪心算法)

    活动选择问题描述: 存在一个教室,有下面若干个活动需要安排在一天进行,活动之间不能重叠,如何安排活动使活动的数量最多? 活动序号 1 2 3 4 5 6 7 8 9 10 11  (活动已经按结束时间 ...

  2. 小船过河(贪心算法)

    题目 只有一艘船,最多能乘2人,船的运行速度为2人中较慢一人的速度,过去后还需一个人把船划回来,问把n个人运到对岸,最少需要多久. 输入: 4 1 2 5 10 输出: 17 思考 1.因为考虑到需要 ...

  3. 贪心算法实例(五):小船过河问题

    N个人过河,船每次只能坐两个人,船载每个人过河的所需时间不同t[i],每次过河的时间为船上的人的较慢的那个,问最快的过河时间.(船划过去要有一个人划回来)     最优选择:       先将所有人过 ...

  4. 贪心算法:小船过河问题

    贪心算法:小船过河问题 题意:N个人过河,船每次只能坐两个人,船载每个人过河的所需时间不同t[i],每次过河的时间为船上的人的较慢的那个,问最快的过河时间.(船划过去要有一个人划回来) 最优选择: 先 ...

  5. 小船过河 matlab,小船过河matlab实现.doc_蚂蚁文库

    小船过河 matlab实现.doc (一)问题分析一只小船要渡过一条宽为d的河流,目标是起点A正对着的另一岸B点.已知河水的流速v1与船在静水中的速度v2之比为k.(1)建立小船的航线模型,并求其解析 ...

  6. 贪心算法——小船过河

    题意:N个人过河,船每次只能坐两个人,船载每个人过河的所需时间不同t[i],每次过河的时间为船上的人的较慢的那个,问最快的过河时间.(船划过去要有一个人划回来) #include<iostrea ...

  7. 农夫过河——python贪心算法实现

    1.问题描述: 一个农夫在河的西岸带了一匹狼.一只羊和一棵白菜,他需要把这三样东西用船带到河的东岸.然而,这艘船只能容下农夫本人和另外一样东西.如果农夫不在场的话,狼会吃掉羊,羊也会吃掉白菜. 2.问 ...

  8. 哈理工OJ-1584-青蛙过河【贪心+二分】

    青蛙王国一年一度的游戏又开始了,这个游戏要求青蛙必须跳过河.河的宽度是 L .河里有n块石头,这n块石头从河的一边笔直的连到另一边.青蛙只能踩着石头过河,如果它们掉到水里,将被淘汰出局.游戏规定青蛙最 ...

  9. 经典小船过河问题,附Python,java题解

    同学在面试时遇到了一个有趣的编程题,笔者很有兴趣,故以此文章作为记录. 题目: N个人过河,船每次只能坐两个人,船载每个人过河的所需时间不同t[i],每次过河的时间为船上的人的较慢的那个,问最快的过河 ...

最新文章

  1. 高糊视频秒变4K,速度快了9倍!东南大学提出新的视频超分辨率系统
  2. 2019牛客暑期多校训练营(第九场) E All men are brothers
  3. Nacos 发布 v0.8.0 Pre-GA版本,安全稳定上生产
  4. html文件头部固定代码
  5. 如何将本地python项目部署到服务器上_如何将本地的Django项目部署到云服务器
  6. c语言删标点,C程序中文标点惹的祸,你可长点儿心吧
  7. java希尔排序_java_java高级排序之希尔排序,希尔排序对于多达几千个数据 - phpStudy...
  8. linux 自动安装脚步,linux自动安装lnmp脚步
  9. 项目开发流程以及接口文档
  10. 大一c语言常见编程题,大一c语言考试复习题
  11. 【转】在线翻译、词典、离线工具大全
  12. 机器学习各种分类算法比较
  13. Java8 Collectors.toMap的key重复
  14. java 可达性算法实现,垃圾标记阶段算法之可达性分析算法
  15. python输入整数_限制输入整数的5种情况(学数学学Python编程)
  16. 电脑时间校准方法,怎么校准电脑时间
  17. 我的前端“先行”之路
  18. 读洛水《知北游》有感(1)
  19. 使用Rancher的RKE部署Kubernetes要点
  20. 水泊梁山好汉们的排名技巧

热门文章

  1. 【C数据类型】基本数据类型
  2. 不站队的UCloud,才是最可怕的
  3. 数据结构与算法——17. 散列(哈希)与完美散列函数
  4. _getch() 和 getch() 及 _T()
  5. Oracle dba培训教程 第一章 Oracle的体系结构
  6. php 计算字数,实现word一样的字数计算
  7. 线程同步(7种同步方法)
  8. 日文电脑文件路径问题
  9. 纽约大学计算机与科学,NYU的Computer Science and Engineering「纽约大学计算机科学与工程系」...
  10. (R)机器学习--学习笔记--第四章节学习笔记