当前位置: 首页 > news >正文

小叶OJ 2716: 过河问题 ← 贪心算法

【题目来源】
http://xiaoye.ac.cn/problem.php?id=2716

【题目描述】
有 n 个人要渡河,但只有一条小船,这条小船一次只能坐下最多两个人,并且只有一副船桨。每个人划船的速度不一样,如果两个人一起上船,由于重量变大,划船的速度相当于是划船速度最慢的那个人速度。假设给出每个人单独划船过河所花费的时间 Ti,请问所有人都过河的总时间最短的时间?

【输入格式】
输入两行,第一行是一个整数,表示要过河的 n 个人。
第二行,是 n 个整数,按速度从快到慢排序好的每个人划船过河的时间。

【输出格式】
输出一行,给出所有人过河所花费最短的时间。

【输入样例】
4
1 2 5 10

【输出样例】
17

【算法分析】
● 将各个过河时间从小到大排序并存在数组 a 中,当 n≥4 时,过河方案为:
方案一:
最快的和次快的过河,然后最快的回来,再次慢的和最慢的过河,然后次快的回来。时间为 a[1]+2*a[2]+a[n]
方案二:
最快的和最慢的过河,然后最快的回来,再最快的和次慢的过河,然后最快的回来。时间为 2*a[1]+a[n-1]+a[n]
根据比较结果,将所选方案的时间累加到总时间 s 中,并将人数 n 减少 2,因为每次循环处理了两个人过河。

【算法代码】

#include <bits/stdc++.h>
using namespace std;int main() {int n;cin>>n;int a[n+5];for(int i=1; i<=n; i++) cin>>a[i];sort(a+1,a+n+1);int s=0;while(n>=4) {if(2*a[1]+a[n-1]+a[n]>2*a[2]+a[1]+a[n]) {s+=2*a[2]+a[1]+a[n];} else s+=2*a[1]+a[n-1]+a[n];n-=2;}if(n==3) s+=a[1]+a[2]+a[3];else if(n==2) s+=a[2];else s+=a[1];cout<<s<<endl;return 0;
}/*
in:
4
1 2 5 10out:
17
*/





【参考文献】
https://blog.csdn.net/u013596478/article/details/105016223

https://mp.weixin.qq.com/s/a9Y2YTpjjmdv2JzI3EtAVw

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 电脑怎么恢复原来的ip地址:全面指南与注意事项
  • 编写并运行第一个spark java程序
  • 快速搭建最简单的前端项目vue+View UI Plus
  • 详解“c:/work/src/components/a/b.vue“‘ has no default export报错原因
  • 望繁信科技携流程智能解决方案亮相CNDS 2024新能源产业数智峰会
  • sizeof和strlen的小知识
  • 【在Linux世界中追寻伟大的One Piece】网络命令|验证UDP
  • vue3-print打印eletable某一行的数据
  • Chainlit集成Langchain并使用通义千问实现和数据库交互的网页对话应用(text2sql)
  • GPT对话知识库——串口通信的数据的组成?起始位是高电平还是低电平?如何用代码在 FreeRTOS 中实现串口通信吗?如何处理串口通信中的数据帧校验吗?
  • 【CSS|第1期】网页设计的演变:从表格布局到Grid布局
  • Lombok:Java开发者的代码简化神器【后端 17】
  • CSS3中的@media查询
  • Go websocket
  • 什么是上拉,下拉?
  • 分享的文章《人生如棋》
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • Android框架之Volley
  • canvas实际项目操作,包含:线条,圆形,扇形,图片绘制,图片圆角遮罩,矩形,弧形文字...
  • go append函数以及写入
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • java多线程
  • Spark RDD学习: aggregate函数
  • vue-router 实现分析
  • Wamp集成环境 添加PHP的新版本
  • windows下使用nginx调试简介
  • Yii源码解读-服务定位器(Service Locator)
  • 理清楚Vue的结构
  • 如何正确配置 Ubuntu 14.04 服务器?
  • 深入浅出webpack学习(1)--核心概念
  • 什么软件可以剪辑音乐?
  • 算法-插入排序
  • 微信公众号开发小记——5.python微信红包
  • 我看到的前端
  • 学习使用ExpressJS 4.0中的新Router
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • 仓管云——企业云erp功能有哪些?
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • ​如何防止网络攻击?
  • ## 1.3.Git命令
  • $.ajax()
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (03)光刻——半导体电路的绘制
  • (function(){})()的分步解析
  • (Git) gitignore基础使用
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (MATLAB)第五章-矩阵运算
  • (补)B+树一些思想
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (分布式缓存)Redis持久化
  • (过滤器)Filter和(监听器)listener
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • (免费领源码)Java#ssm#MySQL 创意商城03663-计算机毕业设计项目选题推荐