(过河问题)
在一个月黑风高的夜晚,有一群人在河的右岸,想通过唯一的一根独木桥走到河的左岸.在伸手不见五指的黑夜里,过桥时必须借照灯光来照明,不幸的是,他们只有一盏灯.另外,独木桥上最多能承受两个人同时经过,否则将会坍塌.每个人单独过独木桥都需要一定的时间,不同的人要的时间可能不同.两个人一起过独木桥时,由于只有一盏灯,所以需要的时间是较慢的那个人单独过桥所花费的时间.现在输入 N(2<=N<1000)和这 N 个人单独过桥需要的时间,请计算总共最少需要多少时间,他们才能全部到达河左岸.
例如,有 3 个人甲 乙 丙,他们单独过桥的时间分别为 1 2 4,则总共最少需要的时间
为 7.具体方法是:甲 乙一起过桥到河的左岸,甲单独回到河的右岸将灯带回,然后甲,丙在
一起过桥到河的左岸,总时间为 2+1+4=7.
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<string>
#include<algorithm>
#include<vector>
#include<map>
#include<set>
#include<list>
#include<queue>
#include<stack>
#include<bitset>
#include<deque>
using namespace std;#define SIZE 100
#define INFINITY 1000000
#define LEFT 1
#define RIGHT 0
#define LEFT_TO_RIGHT 1
#define RIGHT_TO_LEFT 0
int n,time[SIZE],pos[SIZE];
int max(int a,int b)
{ if(a>b)return a;elsereturn b;
}
int min(int a,int b)
{ if(a>b)return b;elsereturn a;
}int go(int stage)
{
int i,j,num,tmp,ans;
if(stage == RIGHT_TO_LEFT){num = 0;ans = 0;for(i = 1;i <= n;i ++)if(pos[i] == RIGHT){num++;if(time[i] > ans)ans=time[i];}if(num<=2) return ans;ans = INFINITY;for(i = 1;i <= n-1; i ++)if(pos[i] == RIGHT)for(j = i+1;j <= n;j++)if(pos[j] == RIGHT){pos[i] = LEFT;pos[j] = LEFT;tmp=max(time[i],time[j])+go(LEFT_TO_RIGHT); //if(tmp < ans)ans = tmp;pos[i]=RIGHT;pos[j]=RIGHT;} //ifposjreturn ans;
} //ifrtol
if(stage == LEFT_TO_RIGHT){ans = INFINITY;for(i = 1;i <= n ;i++)if(pos[i]==LEFT){pos[i] = RIGHT;tmp = time[i]+go(RIGHT_TO_LEFT);//if(tmp < ans)ans = tmp;pos[i]=LEFT;}return ans;}//ifltor
return 0;
}
int gogo(int n){int ans;if(n==1){ans=time[1];};if(n==2){ans=max(time[1],time[2]);};if(n==3) {ans=time[1]+time[2]+time[3];};if (n>=4) ans=min(2*time[1]+time[n-1]+time[n],time[1]+2*time[2]+time[n])+gogo(n-2);return ans;}
int main()
{int i;scanf("%d",&n);for(i = 1;i <= n;i ++){scanf("%d",&time[i]);pos[i] = RIGHT;}printf("go ans:%d\n",go(RIGHT_TO_LEFT));sort(time+1,time+1+n);printf("gogo ans:%d\n",gogo(n));return 0;
}
/*
3
1 2 4
ans:7
4
1 2 4 7
ans:14
4
1 2 10 11
ans:18
4
860 396 45 891
ans:2124
*/

用了两种方法,t2的时间在gogo去掉一次,留给递归函数

NOIP 过河问题 月黑风高的夜晚相关推荐

  1. 一个月黑风高的夜晚紧急完成gitlab服务器数据迁移

    文章目录 前言 修复过程 备份数据 修改存放目录 关闭服务 迁移数据 刷新配置 启动服务 总结 前言 真是无巧不成书,白天刚刚讨论了一天 SVN 服务器迁移事情,晚上突然被告知 gitlab 服务无法 ...

  2. 过河问题 还是不会 去学请教一下 数学老师 -----

    问题 B: 过河问题 时间限制: 1 Sec  内存限制: 128 MB 提交: 10  解决: 1 [提交][状态][讨论版] 题目描述 在一个月黑风高的夜晚,有一群人在河的右岸,想通过唯一的一根独 ...

  3. 搜索专题【2010】四2.过河问题

    [2010]2.(过河问题)在一个月黑风高的夜晚,有一群人在河的右岸,想通过唯一的一根独木桥走到河的左岸.在这伸手不见五指的黑夜里,过桥时必须借助灯光来照明,不幸的是,他们只有一盏灯.另外,独木桥上最 ...

  4. 月黑风高618,今年疫情影响消费了吗?

    2020年京东618,是疫情之后的第一个电商大促,你报复性消费了吗? 在618还未开始之前,社会各界对这次年中大促展开了激烈的讨论.观点一,从春节到现在积压的消费欲望,会在618爆发出来.观点二,疫情 ...

  5. 如何写出安全的API接口(参数加密+超时处理+私钥验证+Https)

    上篇文章说到接口安全的设计思路,如果没有看到上篇博客,建议看完再来看这个. 通过园友们的讨论,以及我自己查了些资料,然后对接口安全做一个相对完善的总结,承诺给大家写个demo,今天一并放出. 对于安全 ...

  6. 我亲手调教的AI,竟然开始歧视我了!

    本文授权转载自微信公众号:硅谷密探(微信ID:guigudiyixian) 硅谷密探是海外第一科技媒体.以深度产品报导为核心,独家采访为特色,沟通中国和硅谷.探秘全球科技精华. "我是一只狗 ...

  7. 天啦噜!生产机器连接数飙升到上万,背后发生了什么?

    0x00. 翻车现场 那是个月黑风高的夜晚,小黑哥成功将新版本发布到了生产,小心翼翼检查了应用日志,后续测试小姐姐验收成功. 恩,小黑哥我还是一如既往的稳~ 接着小黑哥就跑到楼下食堂吃个夜宵,谁知正吃 ...

  8. 上线前一个小时,dubbo这个问题可把我折腾惨了

    来自:猿天地 前因 那是一个月黑风高的夜晚,不管有没有圆圆的月亮,都无法解救要加班的我.这就是苦涩的人生啊! 那天正好是春节回家的日子,定了晚上的票,然后还是上线的日子. 测试在做回归测试的时候,发现 ...

  9. svm多分类_人工智能科普|机器学习重点知识——支持向量机SVM

    作为模式识别或者机器学习的爱好者,同学们一定听说过支持向量机这个概念,这可是一个,在机器学习中避不开的重要问题. 其实关于这个知识点,有一则很通俗有趣的传说: 很久以前,一个村庄里住着一位退隐的大侠, ...

最新文章

  1. gdiplus判断一个点是否在圆弧线上_上挑眼型会更显老吗?杨丞琳和张雨绮示范了2条不同路线...
  2. 【模型解读】network in network中的1*1卷积,你懂了吗
  3. 【机器学习】特征预处理
  4. C++horspool算法查找字符串是否包含子字符串(附完整源码)
  5. matlab数学实验课件4,数学实验4_数学实验_doc_大学课件预览_高等教育资讯网
  6. [剑指Offer] 数据流中的中位数
  7. 汉诺塔问题深度剖析(python实现)
  8. 给.net初学者的一些建议(共勉之)[转载]
  9. 基于消息队列的UDP并发服务器v1
  10. Matlab实用代码——直方图的绘制并在单个直方图上标注对应数字
  11. 新增对象Products 的流程说明
  12. Flink Batch SQL 1.10 实践
  13. java超级玛丽代码_java版超级玛丽源代码
  14. 个人注册网站域名怎么注册?能注册哪些?
  15. java 北京 就业_叩丁狼教育北京Java一期就业报道
  16. 计算机命令无法到达打印机,Win7打印机发送打印命令后不打印自动消失怎么办...
  17. 计算机学科专业基础综合408考研经验
  18. 【数论】关于质数的几个定理,用 latex 来表示数学公式
  19. python无法写入文件夹_python write无法写入文件的解决方法
  20. 野人学Android基础篇之初探UI控件第一课--TextView动态赋值

热门文章

  1. iOS应用签名管理工具
  2. 为了讲清楚Android触摸事件,我“拆了部手机”
  3. 初创企业墓志铭:创业死亡榜背后的逻辑
  4. CentOS开发环境搭建
  5. 关于MAVROS版本不对导致的错误。md5sum
  6. 世界上最流行的脚本-JavaScript,看过不会来找我
  7. python与室内设计_室内设计之3DMax软件的应用
  8. linux 识别磁带库,[转]红旗Linux下使用HP MSL 6060磁带库
  9. SAP-PP模块-并行工序
  10. c语言 个性签名,一笔艺术签名设计免费版