南阳47 过河问题(经典贪心)
来源:互联网 发布:顺德农商网上银行软件 编辑:程序博客网 时间:2024/06/06 09:15
过河问题
时间限制:1000 ms | 内存限制:65535 KB
难度:5
- 描述
在漆黑的夜里,N位旅行者来到了一座狭窄而且没有护栏的桥边。如果不借助手电筒的话,大家是无论如何也不敢过桥去的。不幸的是,N个人一共只带了一只手电筒,而桥窄得只够让两个人同时过。如果各自单独过桥的话,N人所需要的时间已知;而如果两人同时过桥,所需要的时间就是走得比较慢的那个人单独行动时所需的时间。问题是,如何设计一个方案,让这N人尽快过桥。
- 输入
- 第一行是一个整数T(1<=T<=20)表示测试数据的组数
每组测试数据的第一行是一个整数N(1<=N<=1000)表示共有N个人要过河
每组测试数据的第二行是N个整数Si,表示此人过河所需要花时间。(0<Si<=100) - 输出
- 输出所有人都过河需要用的最少时间
- 样例输入
141 2 5 10
- 样例输出
17
算法思想:从大到小依次往过送,每次送最大的两个,方案有两种
第一:AB过,A回,CD过,B回;t1=a[0]+a[1]*2+a[n];
第二:AD过,A回,AC过,A回;t2=2*a[0]+a[n-1]+a[n];
当剩余3个人的时候 AC过,A回,AB过这种情况消耗时间最短。t3=a[0]+a[1]+a[2];
剩余2个或1个人时,可以直接全部过去。 t4=a[1](2个人)或t4=a[0](1个人)
推荐:参考链接
- #include<stdio.h>
- #include<string.h>
- #include<algorithm>
- using std::sort;
- int min(int a,int b){return a<b?a:b;}
- int Bridge_corss(int n,int *a)
- {
- int t=0;
- for(n--;n>=3;n-=2)
- { //从大到小依次送过去即可
- int t1=a[0]+a[1]*2+a[n];
- //AB过,A回,t=a[1]+a[0];
- //CD过,B回,t=a[n]+a[1];
- //AB不过 ,t=a[1];
- int t2=2*a[0]+a[n-1]+a[n];
- //AD过A回,AC过A回
- t+=min(t1,t2);
- }
- if(n==2)
- t+=a[0]+a[1]+a[2];
- //AC过,A回,AB再过则全部过去
- else if(n==1)
- t+=a[1];
- else if(n==0)
- t+=a[0];
- return t;
- }
- int main()
- {
- int N;
- int a[1200];
- scanf("%d",&N);
- while(N--)
- {
- int n;
- memset(a,0,sizeof(a));
- scanf("%d",&n);
- for(int i=0;i<n;i++)
- scanf("%d",&a[i]);
- sort(a,a+n);
- printf("%d\n",Bridge_corss(n,a));
- }
- return 0;
- }
0 0
- 南阳47 过河问题(经典贪心)
- 南阳47 过河问题(经典贪心)
- 南阳-47-过河问题(贪心)
- 南阳理工acm 47过河问题(贪心+排序)
- 过河问题(南阳oj47)(贪心)
- 南阳 47 过河问题
- POJ 1700 经典过河问题(贪心)
- POJ1700 【经典过河问题,贪心】
- 南阳OJ 47 过河问题
- NYOJ-47 过河问题(贪心)
- NYOJ 47 过河问题 (贪心)
- NYOJ 题目47 过河问题 (贪心)
- nyoj 47 过河问题(贪心)
- nyoj 47 过河问题(贪心)
- NYOJ 47 过河问题(贪心)
- nyoj 47 过河 过河问题 【贪心】
- 南阳理工OJ_题目47 过河问题
- 南阳理工:过河问题
- poj3635 Full Tank?(spfa+dp)
- CSS3 抛物线 加入购物车
- 47 - 按位实现加减乘除 四则运算
- Hduuoj1034【水题】
- linux apache2 tomcat7 mod_jk 整合
- 南阳47 过河问题(经典贪心)
- 关于iOS控件全局样式统一设定问题
- springmvc中@RequestMapping 和 controller 小结
- 牟家和:没有无耻的创业者,只有无耻的投机者
- SPOJ 2713. Can you answer these queries IV(GSS4 线段树)
- INI文件格式以及Java编码实现读取
- 20150727 JavaScript入门学习笔记
- java中引用js文件
- OC之给NSString增加分类(分类的特点)