对于这一类问题,我们首先想到的就是用贪心算法。
我们可以让时间最长的两个人过河,但是怎么做才能把时间变为最短呢?是用时间最短的人一个一个送过去,还是怎么样呢?
其实,我们可以考虑两种方法:1.让时间最短的人一个一个的送过去;2.先要两个时间最短的过去,然后一个回来送电灯,然后让两个时间最长的人过去,再要对面时间最短的人把电灯送回来,以此类推;
我们要做的就是在这两种方法中选择一种过河。
代码如下:

#include<stdio.h>
void sort(int *a,int left,int right){if(left>=right)return;int i,j,t;i=left,j=right,t=a[left];while(i<j){while(i<j&&a[j]>=t)j--;a[i]=a[j];while(i<j&&a[i]<=t)i++;a[j]=a[i];}a[i]=t;sort(a,left,i-1);sort(a,i+1,right);
}
int main(){int N;scanf("%d",&N);while(N--){int n,a[1010],i,sum=0;scanf("%d",&n);for(i=0;i<n;i++)scanf("%d",&a[i]);sort(a,0,n-1);while(n>3){if((a[n-1]+a[0]+a[n-2]+a[0])>(a[n-1]+a[1]+a[1]+a[0]))sum+=a[n-1]+a[1]+a[1]+a[0];elsesum+=a[n-1]+a[0]+a[n-2]+a[0];n=n-2;}if(n==3)sum+=a[0]+a[1]+a[2];else if(n==2)sum+=a[1];elsesum+=a[0];printf("%d\n",sum);}return 0;
}

南阳OJ 47 过河问题相关推荐

  1. 南阳oj a+b问题

    #include<iostream> using namespace std; int main () { int a,b; cin>>a>>b; cout< ...

  2. 多人过河问题C语言贪心算法,南阳oj贪心算法之过河问题

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

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

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

  4. 南阳oj 1的个数

    #include<iostream> #include<math.h> using namespace std; int main () { int t; cin>> ...

  5. 南阳OJ 16 矩形嵌套

    描写叙述 有n个矩形,每个矩形能够用a,b来描写叙述,表示长和宽. 矩形X(a,b)能够嵌套在矩形Y(c,d)中当且仅当a<c,b<d或者b<c,a<d(相当于旋转X90度). ...

  6. 南阳OJ独木舟上的旅行

     /*独木舟上的旅行 时间限制:3000 ms  |  内存限制:65535 KB 难度:2 描述 进行一次独木舟的旅行活动,独木舟可以在港口租到,并且之间没有区别. 一条独木舟最多只能乘坐两个人 ...

  7. 南阳oj 语言入门 房间安排

    给大家推荐个靠谱的公众号程序员探索之路,大家一起加油 #include<stdio.h> #include<stdlib.h> #include<algorithm& ...

  8. 南阳oj入门题-A+B Problem

    /** A+B Problem 时间限制:3000 ms | 内存限制:65535 KB 难度:0 描述 此题为练手用题,请大家计算一下a+b的值 输入 输入两个数,a,b 输出 输出a+b的值 样例 ...

  9. 南阳oj入门题-蛇形填数

    /** 蛇形填数 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 在n*n方陈里填入1,2,...,n*n,要求填成蛇形.例如n=4时方陈为: 10 11 12 1 9 16 ...

  10. 南阳oj入门题-数数

    /** 数数 时间限制:3000 ms | 内存限制:65535 KB 难度:2 描述 我们平时数数都是喜欢从左向右数的,但是我们的小白同学最近听说德国人数数和我们有些不同,他们正好和我们相反,是从右 ...

最新文章

  1. 一文详解NDT算法实现
  2. [CoolStuff]有趣的Zumobi
  3. GitHub遭攻击滥用以代管网钓套件
  4. Ocr技术 识别高级验证码
  5. java动态打印_JFreeChart学习(三)——动态打印java内存使用情况
  6. 五年级下册电子计算机与多媒体,语文人教版五年级下册《电子计算机与多媒体》.doc...
  7. 最热门的10个Java微服务框架
  8. css中margin属性的探究
  9. 共享计算机管理员权限设置,有共享文件夹。怎么从局域网取得管理员权限
  10. jmeter-正则表达式提取器
  11. 用过滤器来解决JSP中文乱码问题
  12. 前端第二天 表格/表单和H5
  13. linux那些事之页迁移(page migratiom)
  14. 专升本英语固定词组搭配500个
  15. android常用单词,Android的英语单词记忆软件系统
  16. Blender图解教程:高仿版超级马里奥(三)身体建模(5月7日更新 附模型下载)
  17. #自动化测试框架的4种有效分类与使用选择
  18. 完整的十字架(漫画)
  19. Ubuntu设置仅允许特定用户或特定IP通过ssh访问
  20. 导出 excel 表格(纯前端)和下载excel 文件

热门文章

  1. cmd怎么查看当前静态路由_怎么使用cmd设置添加电脑上静态路由
  2. 量子十问之二:“爱因斯坦幽灵”能用来实现超光速通信吗?
  3. 如何做好日程管理?实操介绍:不同角色的日程管理方法
  4. 听说这是互联网时代100本必读书单,你看过几本?
  5. 超炫酷的Bat脚本入门教程
  6. [工具使用]黑暗引擎FOFA
  7. lattice diamond 安装及获取license方法
  8. 单引号、双引号、三引号用法
  9. taobao_seckill_anyi项目配置与运行main.py(7)【图文并茂的小白级教程】
  10. 360自研分布式存储系统Bada的架构设计和应用