过河问题

时间限制:1000 ms  |  内存限制:65535 KB
难度:5
描述

在漆黑的夜里,N位旅行者来到了一座狭窄而且没有护栏的桥边。如果不借助手电筒的话,大家是无论如何也不敢过桥去的。不幸的是,N个人一共只带了一只手电筒,而桥窄得只够让两个人同时过。如果各自单独过桥的话,N人所需要的时间已知;而如果两人同时过桥,所需要的时间就是走得比较慢的那个人单独行动时所需的时间。问题是,如何设计一个方案,让这N人尽快过桥。

输入
第一行是一个整数T(1<=T<=20)表示测试数据的组数
每组测试数据的第一行是一个整数N(1<=N<=1000)表示共有N个人要过河
每组测试数据的第二行是N个整数Si,表示此人过河所需要花时间。(0<Si<=100)
输出
输出所有人都过河需要用的最少时间
样例输入
1
4
1 2 5 10
样例输出
17
来源
POJ
上传者

张云聪

思路:

在n>3的时候就用前两个小的来带后两个大的(也就是1,2先过,然后1回来,然后n,n-1过,然后2,回来),如果n==3的时候,就1,2过然后1回来,然后1,3过就过来了,如果n==2时,1,2一起过,如果n==1时,直接1过来就行了!

代码:

  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <algorithm>
  4. using namespace std;
  5. int a[1000+5];
  6. int vis[1000+5];
  7. int main()
  8. {
  9. int T;
  10. scanf("%d",&T);
  11. while(T--)
  12. {
  13. int n;
  14. scanf("%d",&n);
  15. for(int i=1;i<=n;i++)
  16. {
  17. scanf("%d",&a[i]);
  18. }
  19. sort(a+1,a+1+n);
  20. int sum=0,k=n;
  21. while(k>3)
  22. {
  23. if(a[k]+a[k-1]+2*a[1]>a[1]+a[k]+2*a[2])
  24. {
  25. sum+=a[1]+a[k]+2*a[2];
  26. k-=2;
  27. }
  28. else
  29. {
  30. sum+=a[k]+a[k-1]+2*a[1];
  31. k-=2;
  32. }
  33. }
  34. if(k==3)
  35. {
  36. sum+=a[1]+a[2]+a[3];
  37. }
  38. if(k==2)
  39. {
  40. sum+=a[2];
  41. }
  42. if(k==1)
  43. {
  44. sum+=a[1];
  45. }
  46. printf("%d\n",sum);
  47. }
  48. return 0;
  49. }

【nyoj 47】 过河问题(思维)相关推荐

  1. NYOJ 题目47 过河问题 (贪心)

    过河问题 时间限制: 1000 ms  |  内存限制: 65535 KB 难度: 5 描述 在漆黑的夜里,N位旅行者来到了一座狭窄而且没有护栏的桥边.如果不借助手电筒的话,大家是无论如何也不敢过桥去 ...

  2. nyoj 47 江 河问题 【贪婪】

    经典的贪婪. 两种方案:一个:让我们来最快,第二快,在过去的第一,最快的回.然后最慢,最慢第二,在过去.次最快的回来a[0]+a[1]+a[1]+a[n-1] 二:最快的和最慢的过去,最快的回来,最快 ...

  3. 哪些习惯能让生活变得简洁高效?

    个人现状是处在三条规则,距离一条规则完全保持简约的生活方式还要努力几年时间. 让生活变得简洁而高效只需要一条规则,就是照管好自己,保持一种简约的生活方式,控制好自己的内心,从加法生活过度到减法生活. ...

  4. linux生成core文件路径,core文件生成和路径设置

    在程序崩溃时,内核会生成一个core文件,即程序最后崩溃时的内存映像,和程序调试信息. 之后可以通过gdb,打开core文件察看程序崩溃时的堆栈信息,可以找出程序出错的代码所在文件和函数. 1.cor ...

  5. 《游戏设计的100个原理》阅读笔记——游戏创新、创作、平衡与解决问题的方法论【转】...

    <游戏设计的100个原理([美]Wendy Despain)>整合了众多游戏设计秘籍,它概括并阐释了100条重要的游戏设计领域的方法.原理和设计哲学,分4篇向读者讲述了游戏创新.创作.平衡 ...

  6. 计算思维 by徐明星老师 逻辑推理、下楼、跳马、分书、八皇后、人鬼过河

    任务1.1 谁做的好事 A:不是我 B:是C C:是D D:他(C)胡说 四个人只有一个人做了好事. 三个人说真话,一个人说假话.请判断谁做了好事. 布尔代数(离散数学):将自然语言转换为机器语言(关 ...

  7. 数据结构与算法笔记:计算思维之经典农夫过河问题C++实现

    农夫.羊.狼.菜的过河问题 问题描述 角色:农夫,羊,狼,菜 条件1:船很小,只能装下农夫和其他一个角色 条件2:无人看管,羊吃菜,狼吃羊 问:如何让其他三种角色被农夫平安带着过河? 相关分析 我们可 ...

  8. 思维题丨5个随从5个商人过河

    题目:五个商人与五个随从坐船过河,开始10人在岸的同一边,一只小船至多能容纳三人,由他们自己划行,随从在河的任意一岸以及船上,只要随从人数比商人多,就会杀人越货.但如何渡河由商人决定,问怎么安全过河. ...

  9. nyoj 691 青蛙过河

    题目链接: http://acm.nyist.net/JudgeOnline/problem.php?pid=619 /// 这道题好像是青蛙过河,我也没有翻译,因为之前做过一个这样的题,就是一条河有 ...

最新文章

  1. 李德毅院士:自动驾驶与智能网联
  2. Max Sum(经典DP)
  3. npm WARN enoent ENOENT: no such file or directory
  4. 译《Understanding Microsoft Virtualization Solutions》-之1.2
  5. jquery ajax传值和后台取参数
  6. Angular应用里使用rxjs提供的观察者和发布者实现事件处理
  7. 前端学习(2348):tabber
  8. JS中var、let、const区别? 用3句话概括
  9. jdk list接口源码解析
  10. Confluence 6 附件存储配置
  11. java 按钮垂直居中_WPF按钮中的文本内容未垂直居中
  12. python电影数据分析报告_电影数据可视化项目分析报告
  13. nginx+php-fpm docker镜像合二为一
  14. 分布式轻量级任务调度框架-XXL-JOB(最全面,附带本人实战)
  15. HDMI RGB_TO_DVI模块
  16. C语言:简易商品库存管理系统(简单易懂,不用指针的入门级示例,数据结构大作业)
  17. LM358电流检测电路
  18. 背景颜色渐变 background
  19. 戴尔服务器的安装维护和调试,服务器的安装与维护技巧——数据湾
  20. 拓嘉启远:关于拼多多搜索溢价,你了解多少

热门文章

  1. [剑指offer]面试题第[59-1]题[Leetcode][第239题][JAVA][滑动窗口的最大值][单调队列][优先队列]
  2. [剑指offer]面试题第[52]题[Leedcode][第160题][JAVA][相交链表][双指针]
  3. [剑指offer][JAVA]面试题第[33]题[二叉搜索树的后序遍历][单调栈][递归分治]
  4. [剑指offer][JAVA]面试题第[09]题[用两个栈实现队列][LinkedList]
  5. HDOJ-1257 最少拦截系统
  6. 条形图坐标轴_解密咨询报告中常见的双层条形图的制作方法
  7. vue点击切换类名_vue 新用户引导(vue-dirver)
  8. Eclipse export导出war包报错(Module name is invalid.)
  9. java file 堵塞_单元测试最终在Java 6中阻塞
  10. 数据库查找姓李的人_最通俗易懂的理解什么是数据库