题目:


有N个人想要过一条河,但是他们只有一条最多载两人的船。因此必须想出一个调度船来回的方法让每个人都能过河。每个人都有自己的划船速度,且同一条船上的两个人取决于慢者的速度。你的任务就是想出一个每人都能过河的最快策略。

输入格式:

输入的第一行是一个正整数T(1 <= T <= 20),表示测试用例的组数。下面是T组用例。每个用例的第一行是正整数N,第二行是N个正整数表示每个人的划船速度。每组用例不会超出1000个人,每个人的划船时间不会超过100秒。

输出格式:

对于每个用例,输出所有N个人都能过河的最短时间(秒)。

输入样例:

2
3
1 3 7
4
1 2 5 10
输出样例:

11
17

解题思路:


参考:https://www.jianshu.com/p/84608db757b4

两个最快的人送两个最慢的人 所需最短时间  与  一个最快的人送两个最慢的人所需时间比较

最后剩余的人数再分情况讨论

ac代码:


#include <bits/stdc++>
#define maxn 1005
#define inf 2147483648
using namespace std;
typedef long long ll;
int main()
{//freopen("/Users/zhangkanqi/Desktop/11.txt","r",stdin);ll t,n,a[maxn];scanf("%lld",&t);while(t--){ll sum=0,i;scanf("%lld",&n);for(i=0;i<n;i++)scanf("%lld",&a[i]);sort(a,a+n);for( i=n-1;i>2;i-=2){sum+=min((a[0]+a[0]+a[i]+a[i-1]),(a[i]+a[0]+a[1]+a[1]));}if(i==2)//for结束前i为4sum+=(a[0]+a[1]+a[2]);if(i==1)sum+=a[1];//for结束前i为3if(i==0)//只有一个人过河sum=a[0];printf("%lld\n",sum);}return 0;
}

【天梯选拔月赛】经典算法之过河问题+(倒水问题--见链接)相关推荐

  1. 数据挖掘的一些经典算法

    数据挖掘能做以下七种不同事情 (分析方法): 数据挖掘能做以下七种不同事情 · 分类 (Classification) · 估计(Estimation) · 预测(Prediction) · 相关性分 ...

  2. 经典算法研究系列:二、Dijkstra 算法初探

    经典算法研究系列:二.Dijkstra 算法初探  July   二零一一年一月 ====================== 本文主要参考:算法导论 第二版.维基百科. 写的不好之处,还望见谅. 本 ...

  3. 经典算法书籍推荐以及算法书排行【算法四库全书】

    经典算法书籍推荐以及算法书排行[算法四库全书] 作者:霞落满天   https://linuxstyle.blog.csdn.net/    https://blog.csdn.net/21aspne ...

  4. 经典算法题每日演练——第六题 协同推荐SlopeOne 算法

    原文:经典算法题每日演练--第六题 协同推荐SlopeOne 算法 相信大家对如下的Category都很熟悉,很多网站都有类似如下的功能,"商品推荐","猜你喜欢&quo ...

  5. 白话经典算法系列之七 堆与堆排序

     堆排序与高速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法.学习堆排序前,先解说下什么是数据结构中的二叉堆. 二叉堆的定义 二叉堆是全然二叉树或者是近似全然二叉树. 二叉堆满 ...

  6. 免费技术直播:唐宇迪带你一节课了解机器学习经典算法

    常常有小伙伴在后台反馈:机器学习经典算法有哪些? 自学难度大又没有效果,该怎么办? CSDN为了解决这个难题,联合唐宇迪老师为大家带来了一场精彩的直播[一节课掌握机器学习经典算法-线性回归模型].本次 ...

  7. 一文了解迁移学习经典算法

    来源 | linolzhang的CSDN博客 作者 | linolzhang ▌一. 了解迁移学习 迁移学习(Transfer Learning)目标是将从一个环境中学到的知识用来帮助新环境中的学习任 ...

  8. 调包侠福音!机器学习经典算法开源教程(附参数详解及代码实现)

    Datawhale 作者:赵楠.杨开漠.谢文昕.张雨 寄语:本文针对5大机器学习经典算法,梳理了其模型.策略和求解等方面的内容,同时给出了其对应sklearn的参数详解和代码实现,帮助学习者入门和巩固 ...

  9. 密码学中经典算法及应用

    一.加密算法理论基础 1.1 背景 密码学相关安全技术在整个信息技术领域的重要地位无需多言.如果没有现代密码学和信息安全的研究成果,人类社会根本无法进入信息时代. 实际上,密码学和安全领域所涉及的知识 ...

  10. PMVS:多视图匹配经典算法

    导语:Multi-View Stereo(MVS)多视图立体匹配与三维重建的任务是:以已知内外参数的多幅图像(SfM的结果)为输入,重建出真实世界中物体/场景的三维模型. 本文作者提出了PMVS的经典 ...

最新文章

  1. 最近发现了好多好资源,赶紧收藏一下!【粒子特效】
  2. jquery的contains如何实现精准匹配
  3. Win10安装玩Ubuntu19.04后,bios和grub页面都没有Windows启动项,无法进入Windows
  4. 20165334 《java程序设计》第2周学习总结
  5. mysql数据库内置函数大全_MySQL数据库——内置函数
  6. python怎么把数据写进txt_python 如何将数据写入本地txt文本文件的实现方法
  7. 1984. 学生分数的最小差值
  8. 第十五节: EF的CodeFirst模式通过DataAnnotations修改默认协定
  9. 5.spiders(文件夹)
  10. 字符串匹配——RabinKarp算法
  11. 《天天数学》连载05:一月五日
  12. 阿里云数据库8月刊:国内首款Cloud Native自研数据库POLARDB精彩亮相VLDB!
  13. ShellExecute的各种用法 [转帖于 2009-05-020 21:15]
  14. Django MySQL 多用户_django使用多个数据库的方法实例
  15. linux 系统下安装中文输入法
  16. kali工具 -- setoolkit(克隆网站及利用)
  17. python能做什么有趣的东西-Python 里itchat 模块能实现什么有趣的东西?
  18. SpringBoot整合oracle报错异常信息(java.lang.AbstractMethodError: oracle.jdbc.driver.T4CConnection.isValid(I))
  19. “跨综服”——跨境电商综合服务合规化走向台前
  20. 云端服务器上传本地项目

热门文章

  1. 15、三数之和(python)
  2. 【java与智能设备】CH07_01_Android中的文件存储
  3. Linux的匿名访问Samba
  4. 两台200smart以太网通讯_S7-200 SMART PLC之间如何实现以太网通信?(附接线图)
  5. javascript 数组操作函数
  6. JS任务栏滚动效果问题
  7. 防火墙旁挂,策略路由引流
  8. C#类、方法的访问修饰符
  9. Android官方开发文档Training系列课程中文版:线程执行操作之定义线程执行代码...
  10. mybatis同时查询未知个数的表中数据(表名做为参数传递,联合查询union)