信息学奥赛一本通(1232:Crossing River)
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)相关推荐
- 信息学奥赛一本通 1232:Crossing River | OpenJudge NOI 4.6 702:Crossing River
[题目链接] ybt 1232:Crossing River OpenJudge NOI 4.6 702:Crossing River 一本通里的翻译不够完整,OpenJudge中的英文原题中有对数据 ...
- 信息学奥赛一本通(基础算法与数据结构-题解汇总目录)
信息学奥赛一本通(C++版)在线评测系统 基础(二)基础算法 更新中...... 第一章高精度计算 1307[例1.3]高精度乘法 1308[例1.5]高精除 1309[例1.6]回文数(Noip ...
- 信息学奥赛一本通 (C++)上机练习
信息学奥赛一本通(C++)上机练习 此书为娃儿的第一本刷题书.娃儿现在四年级 ,希望他能坚持下来.特开贴加油 luogu: disangan223 第一部分 C++语言 第一章 C++语言入门 T10 ...
- 信息学奥赛一本通_长乐一中老师演绎“奥赛传奇”
董永建(右一)在课堂上. 台海网5月14日讯 据福州晚报报道,长乐一中有一位"传奇"老师--15年来,他辅导的学生在全国高中生信息学奥赛中获金牌3人次.银牌3人次.铜牌5人次:在全 ...
- 信息学奥赛一本通 提高篇 第5章 矩阵乘法
例1 矩阵AXB 信息学奥赛一本通(C++版)在线评测系统 [矩阵乘法]矩阵A×B_Uletay-CSDN博客 矩阵乘法--矩阵A×B_vina的博客-CSDN博客 一本通1641[例 1]矩阵 A× ...
- 《信息学奥赛一本通提高篇》第6章 组合数学
例1 计算系数(NOIP2011提高) 信息学奥赛一本通(C++版)在线评测系统 NOIP2011计算系数_nanhan27的博客-CSDN博客 「NOIP2011」 计算系数 - 组合数_TbYan ...
- 《信息学奥赛一本通 提高篇》
提高篇 第一部分 基础算法 第1章 贪心算法 提高篇 第一部分 基础算法 第1章 贪心算法_青少年趣味编程-CSDN博客 提高篇 第一部分 基础算法 第1章 贪心算法 提高篇 第一部分 基础算法 第1 ...
- 信息学奥赛一本通 提高篇 第一部分 基础算法 第2章 二分与三分
信息学奥赛一本通 提高篇 提高版 第一部分 基础算法 第2章 二分与三分 信息学奥赛一本通 提高篇 提高版 第一部分 基础算法 第2章 二分与三分_mrcrack的博客-CSDN博客_信息学奥赛一本通 ...
- 信息学奥赛一本通 提高篇 第六部分 数学基础 相关的真题
第1章 快速幂 1875:[13NOIP提高组]转圈游戏 信息学奥赛一本通(C++版)在线评测系统 第2 章 素数 第 3 章 约数 第 4 章 同余问题 第 5 章 矩阵乘法 第 6 章 ...
- 信息学奥赛一本通 1080:余数相同问题 2022.1.29 AC
http://ybt.ssoier.cn:8088/show_source.php?runid=14630195 /* 信息学奥赛一本通 1080:余数相同问题 2022.1.29 AC http:/ ...
最新文章
- 一个不错的报表工具 open flash chart 2
- Java:JDK安装
- android线程优先级大小,android 设置线程优先级 两种方式
- 查看layui的版本号
- 利用函数重载编写函数max_彻底理清重载函数匹配
- 【渝粤教育】国家开放大学2019年春季 1117机电控制与可编程序控制 参考试题
- python绘图-增加子区域
- [洛谷1681]最大正方形II
- 爬取猎聘大数据岗位相关信息--Python
- 投票群体案例介绍(36)
- npm i出错解决Cannot read properties of null (reading ‘pickAlgorithm‘)
- ffmpeg(六)视频缩放及像素格式转换
- 图像和音频格式解析一览
- linux 修改 bcast,Linux下修改MAC地址
- Okra App Framework 框架导航过程
- Do Transformers Really Perform Bad for Graph Representation 阅读笔记
- 使用Python搭建Gitee图床
- Python Excel的使用2
- Xbox手柄转子马达的控制运用机制原理
- SpringBoot启动发生的事件顺序