智力+贪心的过河问题
点击打开链接
那么这时将单独过河所需要时间最多的两个旅行者送到对岸去,
/有两种方式:
1> 最快的(即所用时间t[0])和次快的过河,然后最快的将船划回来,再次慢的和最慢的过河,然后次快的将船划回来.
2> 最快的和最慢的过河,然后最快的将船划回来,再最快的和次慢的过河,然后最快的将船划回来.
这样就将过河所需时间最大的两个人送过了河,而对于剩下的人,采用同样的处理方式,接下来做的就是判断怎样用的时间最少.
1> 方案1所需时间为:t[0]+2*t[1]+t[n-1]
2> 方案2所需时间为:2*t[0]+t[n-2]+t[n-1]
如果方式1优于方式2,那么有:t[0]+2*t[1]+t[n-1]<2*t[0]+t[n-2]+t[n-1] 化简得:2*t[1]<t[0]+t[n-2]
即此时只需比较2*t[1]与t[0]+t[n-2]的大小关系即可确定最小时间,也可以直接比较两方案的时间,然后选择;此时已经将单独过河所需时间最多的两个人送过了河,那么剩下过河的人数为:n-=2,采取同样的处理方式.
注意每次都是把最慢和次慢过河,所以只要直接-2就ok对前面的没有影响。还有就是当少于四个人的时候过河的时间;之前我只想到第二种方法,没想到第一种方案。就纳闷怎么贪心啊?0?
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
#define MIN(a,b) a<b?a:b;
int main()
{int t,all,alltime,a[1005];scanf("%d",&t);while(t--){alltime=0;scanf("%d",&all);memset(a,0,sizeof(a));for(int i=0;i<all;i++)scanf("%d",&a[i]);sort(a,a+all);if(all==1)alltime+=a[0];if(all==2)alltime+=a[1];if(all==3)alltime+=MIN(a[0]+a[all-2]+a[all-1],a[1]*2+a[all-1]); //只用来回两趟if(all>3){while(all>3){alltime+=MIN(a[0]+2*a[1]+a[all-1],2*a[0]+a[all-2]+a[all-1]);all-=2;}if(all==1)alltime+=a[0];if(all==2)alltime+=a[1];if(all==3)alltime+=MIN(a[0]+a[all-2]+a[all-1],a[1]*2+a[all-1]);}printf("%d\n",alltime);}return 0;
}
智力+贪心的过河问题相关推荐
- 贪心算法----过河问题
问题: 在漆黑的夜里,N位旅行者来到了一座狭窄而且没有护栏的桥边.如果不借助手电筒的话,大家是无论如何也不敢过桥去的.不幸的是,N个人一共只带了一只手电筒,而桥窄得只够让两个人同时过.如果各自单独过桥 ...
- 多人过河问题C语言贪心算法,贪心算法----过河问题
问题: 在漆黑的夜里,N位旅行者来到了一座狭窄而且没有护栏的桥边.如果不借助手电筒的话,大家是无论如何也不敢过桥去的.不幸的是,N个人一共只带了一只手电筒,而桥窄得只够让两个人同时过.如果各自单独过桥 ...
- 多人过河问题C语言贪心算法,过河问题(贪心算法)(示例代码)
一.问题描述 在漆黑的夜里,甲乙丙丁共四位旅行者来到了一座狭窄而且没有护栏的桥边.如果不借助手电筒的话,大家是无论如何也不敢过桥去的.不幸的是,四个人一共只带 了一只手电筒,而桥窄得只够让两个人同时过 ...
- 信息学奥赛一本通 1232:Crossing River | OpenJudge NOI 4.6 702:Crossing River
[题目链接] ybt 1232:Crossing River OpenJudge NOI 4.6 702:Crossing River 一本通里的翻译不够完整,OpenJudge中的英文原题中有对数据 ...
- 学习算法的七重境界,我在撸串境界,你在哪一重?
作者 | liuyubobobo 来源 | 是不是很酷 今天这篇推文,聊一聊我眼里的,知识掌握的七个境界. 第一重境界:撸串境界 知识掌握的第一重境界,我管它叫"撸串境界".什么意 ...
- 2019.2.6C++赛 7、8待换思路
1.无聊的hbz 1.3.5的倍数分别切换一次状态,初始为关,求最终多少开着 答案:888 2.羊羊过桥 两羊同行以慢者计时,一羊走回传手电,求最快都过桥时间 答案:15 (贪心,过河问题) 3.拼火 ...
- 过河问题(贪心算法)(python)
过河问题(贪心算法) - CapitalAccumulation - 博客园 思路非常清晰 过河问题 一.问题描述 二.问题答案 三.扩展 四.问题推广 五.对于本题的最优选择: coding 一.问 ...
- 活动选择与小船过河问题(贪心算法)
活动选择问题描述: 存在一个教室,有下面若干个活动需要安排在一天进行,活动之间不能重叠,如何安排活动使活动的数量最多? 活动序号 1 2 3 4 5 6 7 8 9 10 11 (活动已经按结束时间 ...
- 智力过河游戏c语言,Flash AS代码实现智力过河小游戏
本教本教程主要用Flash AS来编写一个智力过河小游戏,全部使用AS代码来实现,教程比较基础,转发过来,希望对大家有所帮助. 游戏规则: 一只大狮子,一只小狮子,一只大老虎.一只小老虎.一只大花豹, ...
最新文章
- poj12月其他题解(未完)
- oauth2 增加token 返回参数_一张图搞定OAuth2.0
- 德国汽车厂发生机器人杀人事件 人机协作是大势所趋
- Linux 发行版之 CentOS 简介
- 腾讯2013实习生笔试题+答案1-5aadaa 6-10adbcc 11-15 acacc16-20 bbddc
- Windows安装.net Framework时安装不上,提示已处理证书链,但是在不受信任提供程序信任的根证书中终止
- 4g通信模块怎么连接sim卡_4G通信模块在ARM平台下的应用
- Go语言计时器的使用详解
- Flash AS3.0中文帮助下载
- 错误: 15138删除对于用户失败,数据库主体在该数据库中拥有架构,无法删除。解决方法(转)
- callback用法 js vue_Vue前端开发——使用高德地图WebApi
- python开发板卡驱动开发_一款能让你发挥无限创意的MicroPython开发板—TPYBoard开发板测...
- 将java类的泛型集合转换成json对象
- PubMed插件神器之PubMedy和Scholarscope(末尾附赠Google截屏神器)
- axure 抖音部件库_抖音常用工具和素材库大全
- (全角→半角)把文字从PDF复制到Word,发现很宽但又不是多出空格?
- 电脑插入耳机声音奇怪,模糊不清楚。解决方法
- ISP(七) CMOS图像传感器内部结构及工作原理
- 补血良方 核桃红枣阿胶糕
- relative的使用
热门文章
- EasyUI环境搭建与入门基础语法
- MyBatisPlus插件扩展_OptimisticLockerInterceptor乐观锁插件的使用
- 只知道java有反射可以说是动态语言,动态链接,早期晚期绑定、虚方法这些概念你知道吗
- 《系统集成项目管理》第十三章 项目合同管理
- Kotlin 与 Java有什么区别(最全最新的)
- 调用c++_WebAssembly: 在C代码中调用JS的函数
- 喜报丨神策数据荣获“2021 年度金屏奖大屏应用创新奖”
- 金融实战篇:最佳数据驱动之城商行
- maven——pom.xml
- hive job oom