点击打开链接

那么这时将单独过河所需要时间最多的两个旅行者送到对岸去,

/有两种方式:
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;
}

智力+贪心的过河问题相关推荐

  1. 贪心算法----过河问题

    问题: 在漆黑的夜里,N位旅行者来到了一座狭窄而且没有护栏的桥边.如果不借助手电筒的话,大家是无论如何也不敢过桥去的.不幸的是,N个人一共只带了一只手电筒,而桥窄得只够让两个人同时过.如果各自单独过桥 ...

  2. 多人过河问题C语言贪心算法,贪心算法----过河问题

    问题: 在漆黑的夜里,N位旅行者来到了一座狭窄而且没有护栏的桥边.如果不借助手电筒的话,大家是无论如何也不敢过桥去的.不幸的是,N个人一共只带了一只手电筒,而桥窄得只够让两个人同时过.如果各自单独过桥 ...

  3. 多人过河问题C语言贪心算法,过河问题(贪心算法)(示例代码)

    一.问题描述 在漆黑的夜里,甲乙丙丁共四位旅行者来到了一座狭窄而且没有护栏的桥边.如果不借助手电筒的话,大家是无论如何也不敢过桥去的.不幸的是,四个人一共只带 了一只手电筒,而桥窄得只够让两个人同时过 ...

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

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

  5. 学习算法的七重境界,我在撸串境界,你在哪一重?

    作者 | liuyubobobo 来源 | 是不是很酷 今天这篇推文,聊一聊我眼里的,知识掌握的七个境界. 第一重境界:撸串境界 知识掌握的第一重境界,我管它叫"撸串境界".什么意 ...

  6. 2019.2.6C++赛 7、8待换思路

    1.无聊的hbz 1.3.5的倍数分别切换一次状态,初始为关,求最终多少开着 答案:888 2.羊羊过桥 两羊同行以慢者计时,一羊走回传手电,求最快都过桥时间 答案:15 (贪心,过河问题) 3.拼火 ...

  7. 过河问题(贪心算法)(python)

    过河问题(贪心算法) - CapitalAccumulation - 博客园 思路非常清晰 过河问题 一.问题描述 二.问题答案 三.扩展 四.问题推广 五.对于本题的最优选择: coding 一.问 ...

  8. 活动选择与小船过河问题(贪心算法)

    活动选择问题描述: 存在一个教室,有下面若干个活动需要安排在一天进行,活动之间不能重叠,如何安排活动使活动的数量最多? 活动序号 1 2 3 4 5 6 7 8 9 10 11  (活动已经按结束时间 ...

  9. 智力过河游戏c语言,Flash AS代码实现智力过河小游戏

    本教本教程主要用Flash AS来编写一个智力过河小游戏,全部使用AS代码来实现,教程比较基础,转发过来,希望对大家有所帮助. 游戏规则: 一只大狮子,一只小狮子,一只大老虎.一只小老虎.一只大花豹, ...

最新文章

  1. poj12月其他题解(未完)
  2. oauth2 增加token 返回参数_一张图搞定OAuth2.0
  3. 德国汽车厂发生机器人杀人事件 人机协作是大势所趋
  4. Linux 发行版之 CentOS 简介
  5. 腾讯2013实习生笔试题+答案1-5aadaa 6-10adbcc 11-15 acacc16-20 bbddc
  6. Windows安装.net Framework时安装不上,提示已处理证书链,但是在不受信任提供程序信任的根证书中终止
  7. 4g通信模块怎么连接sim卡_4G通信模块在ARM平台下的应用
  8. Go语言计时器的使用详解
  9. Flash AS3.0中文帮助下载
  10. 错误: 15138删除对于用户失败,数据库主体在该数据库中拥有架构,无法删除。解决方法(转)
  11. callback用法 js vue_Vue前端开发——使用高德地图WebApi
  12. python开发板卡驱动开发_一款能让你发挥无限创意的MicroPython开发板—TPYBoard开发板测...
  13. 将java类的泛型集合转换成json对象
  14. PubMed插件神器之PubMedy和Scholarscope(末尾附赠Google截屏神器)
  15. axure 抖音部件库_抖音常用工具和素材库大全
  16. (全角→半角)把文字从PDF复制到Word,发现很宽但又不是多出空格?
  17. 电脑插入耳机声音奇怪,模糊不清楚。解决方法
  18. ISP(七) CMOS图像传感器内部结构及工作原理
  19. 补血良方 核桃红枣阿胶糕
  20. relative的使用

热门文章

  1. EasyUI环境搭建与入门基础语法
  2. MyBatisPlus插件扩展_OptimisticLockerInterceptor乐观锁插件的使用
  3. 只知道java有反射可以说是动态语言,动态链接,早期晚期绑定、虚方法这些概念你知道吗
  4. 《系统集成项目管理》第十三章 项目合同管理
  5. Kotlin 与 Java有什么区别(最全最新的)
  6. 调用c++_WebAssembly: 在C代码中调用JS的函数
  7. 喜报丨神策数据荣获“2021 年度金屏奖大屏应用创新奖”
  8. 金融实战篇:最佳数据驱动之城商行
  9. maven——pom.xml
  10. hive job oom