1232:Crossing River

时间限制: 1000 ms         内存限制: 65536 KB
提交数: 6415     通过数: 2761

【题目描述】

几个人过河,每次过两人一人回,速度由慢者决定,问过河所需最短时间。

【输入】

输入t组数据,每组数据第1行输入n,第2行输入n个数,表示每个人过河的时间。

【输出】

输出t行数据,每行1个数,表示每组过河最少时间。

【输入样例】

1
4
1 2 5 10

【输出样例】

17

【分析】

过桥问题是贪心算法的经典问题,有很多种变化,笔试面试中也经常碰到。本题贪心思想就是能者多劳,很容易想到尽可能利用速度快的人,且尽可能先把慢的人送走。

首先,先将过河时间从小到大进行排序,也就是说快的人在前,慢的人在后。

一、当人数 ≤ 3 时:

只有 1 个人:过河时间为 a[1];
        只有 2 个人:过河时间为 a[2];
        只有 3 个人:过河时间为 a[1] + a[2] + a[3];

二、当人数 > 3 时:每次让最慢的两个人过河,有两种过河方案:

1、过河最快的是 a[1],次快的为 a[2],次慢的为 a[n-1],最慢的为 a[n];

2、方案1:a[1]和a[n-1]一起走,a[1]回,a[1]和a[n]一起走,a[1]回,完毕。时间:a[n-1]+a[1]+a[n]+a[1],即:2*a[1]+a[n-1]+a[n];

3、方案2:a[1]和a[2]一起走,a[1]回,a[n-1]和a[n]一起走,a[2]回,完毕。时间:a[2]+a[1]+a[n]+a[2],即:a[1]+2*a[2]+a[n];

4、每次对两种过河方案取最小值。

以样例为例:1 2 5 10过河,方案1: 1和10过河,1返回,1和5过河,1返回,1和2过河完毕。时间:10+1+5+1+2=19。方案2: 1和2过河,1返回,5和10过河,2返回,1和2过河完毕。时间:2+1+10+2+2=17。取19和17的最小值,结果17。

【参考代码】

#include <stdio.h>
#define N 1010int a[N];int min(int x,int y)
{return x < y ? x : y;
}
int main()
{int i,j,n,t,tmp,ans;scanf("%d",&t);while(t--){scanf("%d",&n);for(i=1;i<=n;i++)scanf("%d",&a[i]);for(i=1;i<n;i++){for(j=i+1;j<=n;j++){if(a[i]>a[j]){tmp=a[i];a[i]=a[j];a[j]=tmp;}}}ans=0;while(n > 3){ans+=min(a[1]*2+a[n]+a[n-1], a[2]*2+a[1]+a[n]);n-=2;}if(n==1)ans+=a[1];else if(n==2)ans+=a[2];elseans+=a[1]+a[2]+a[3];printf("%d\n",ans);}return 0;
}

http://ybt.ssoier.cn:8088/problem_show.php?pid=1232

信息学奥赛一本通(1232:Crossing River)相关推荐

  1. 信息学奥赛一本通 1232:Crossing River | OpenJudge NOI 4.6 702:Crossing River

    [题目链接] ybt 1232:Crossing River OpenJudge NOI 4.6 702:Crossing River 一本通里的翻译不够完整,OpenJudge中的英文原题中有对数据 ...

  2. 信息学奥赛一本通(基础算法与数据结构-题解汇总目录)

    信息学奥赛一本通(C++版)在线评测系统 基础(二)基础算法   更新中...... 第一章高精度计算 1307[例1.3]高精度乘法 1308[例1.5]高精除 1309[例1.6]回文数(Noip ...

  3. 信息学奥赛一本通 (C++)上机练习

    信息学奥赛一本通(C++)上机练习 此书为娃儿的第一本刷题书.娃儿现在四年级 ,希望他能坚持下来.特开贴加油 luogu: disangan223 第一部分 C++语言 第一章 C++语言入门 T10 ...

  4. 信息学奥赛一本通_长乐一中老师演绎“奥赛传奇”

    董永建(右一)在课堂上. 台海网5月14日讯 据福州晚报报道,长乐一中有一位"传奇"老师--15年来,他辅导的学生在全国高中生信息学奥赛中获金牌3人次.银牌3人次.铜牌5人次:在全 ...

  5. 信息学奥赛一本通 提高篇 第5章 矩阵乘法

    例1 矩阵AXB 信息学奥赛一本通(C++版)在线评测系统 [矩阵乘法]矩阵A×B_Uletay-CSDN博客 矩阵乘法--矩阵A×B_vina的博客-CSDN博客 一本通1641[例 1]矩阵 A× ...

  6. 《信息学奥赛一本通提高篇》第6章 组合数学

    例1 计算系数(NOIP2011提高) 信息学奥赛一本通(C++版)在线评测系统 NOIP2011计算系数_nanhan27的博客-CSDN博客 「NOIP2011」 计算系数 - 组合数_TbYan ...

  7. 《信息学奥赛一本通 提高篇》

    提高篇 第一部分 基础算法 第1章 贪心算法 提高篇 第一部分 基础算法 第1章 贪心算法_青少年趣味编程-CSDN博客 提高篇 第一部分 基础算法 第1章 贪心算法 提高篇 第一部分 基础算法 第1 ...

  8. 信息学奥赛一本通 提高篇 第一部分 基础算法 第2章 二分与三分

    信息学奥赛一本通 提高篇 提高版 第一部分 基础算法 第2章 二分与三分 信息学奥赛一本通 提高篇 提高版 第一部分 基础算法 第2章 二分与三分_mrcrack的博客-CSDN博客_信息学奥赛一本通 ...

  9. 信息学奥赛一本通 提高篇 第六部分 数学基础 相关的真题

    第1章   快速幂 1875:[13NOIP提高组]转圈游戏 信息学奥赛一本通(C++版)在线评测系统 第2 章  素数 第 3 章  约数 第 4 章  同余问题 第 5 章  矩阵乘法 第 6 章 ...

  10. 信息学奥赛一本通 1080:余数相同问题 2022.1.29 AC

    http://ybt.ssoier.cn:8088/show_source.php?runid=14630195 /* 信息学奥赛一本通 1080:余数相同问题 2022.1.29 AC http:/ ...

最新文章

  1. 一个不错的报表工具 open flash chart 2
  2. Java:JDK安装
  3. android线程优先级大小,android 设置线程优先级 两种方式
  4. 查看layui的版本号
  5. 利用函数重载编写函数max_彻底理清重载函数匹配
  6. 【渝粤教育】国家开放大学2019年春季 1117机电控制与可编程序控制 参考试题
  7. python绘图-增加子区域
  8. [洛谷1681]最大正方形II
  9. 爬取猎聘大数据岗位相关信息--Python
  10. 投票群体案例介绍(36)
  11. npm i出错解决Cannot read properties of null (reading ‘pickAlgorithm‘)
  12. ffmpeg(六)视频缩放及像素格式转换
  13. 图像和音频格式解析一览
  14. linux 修改 bcast,Linux下修改MAC地址
  15. Okra App Framework 框架导航过程
  16. Do Transformers Really Perform Bad for Graph Representation 阅读笔记
  17. 使用Python搭建Gitee图床
  18. Python Excel的使用2
  19. Xbox手柄转子马达的控制运用机制原理
  20. SpringBoot启动发生的事件顺序

热门文章

  1. sharepoint数据库连接
  2. 只有22%的人做对了这道数据分析题,你来试试吗?
  3. 年薪30k-50k、面试通过率90%,这个职位到底是在做什么?
  4. 12款堪称神器的 Chrome 插件,Max 你的工作效率!
  5. Simulink之功率场效应晶体管(P-MOSFET)
  6. Spring Boot 永远滴神!10分钟快速入门
  7. 全面容器化:阿里5年带给我的最大收获
  8. 为什么美团全面推动 K8S 落地,咬紧牙关也要搞云原生?
  9. good-Windows下搭建PHP开发环境(Apache+PHP+MySQL)
  10. PLSQL创建用户及权限分配