南阳OJ 47 过河问题
对于这一类问题,我们首先想到的就是用贪心算法。
我们可以让时间最长的两个人过河,但是怎么做才能把时间变为最短呢?是用时间最短的人一个一个送过去,还是怎么样呢?
其实,我们可以考虑两种方法: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 过河问题相关推荐
- 南阳oj a+b问题
#include<iostream> using namespace std; int main () { int a,b; cin>>a>>b; cout< ...
- 多人过河问题C语言贪心算法,南阳oj贪心算法之过河问题
/** 过河问题 时间限制:1000 ms | 内存限制:65535 KB 难度:5 描述 在漆黑的夜里,N位旅行者来到了一座狭窄而且没有护栏的桥边.如果不借助手电筒的话,大家是无论如何也不敢过桥去的 ...
- NYOJ 题目47 过河问题 (贪心)
过河问题 时间限制: 1000 ms | 内存限制: 65535 KB 难度: 5 描述 在漆黑的夜里,N位旅行者来到了一座狭窄而且没有护栏的桥边.如果不借助手电筒的话,大家是无论如何也不敢过桥去 ...
- 南阳oj 1的个数
#include<iostream> #include<math.h> using namespace std; int main () { int t; cin>> ...
- 南阳OJ 16 矩形嵌套
描写叙述 有n个矩形,每个矩形能够用a,b来描写叙述,表示长和宽. 矩形X(a,b)能够嵌套在矩形Y(c,d)中当且仅当a<c,b<d或者b<c,a<d(相当于旋转X90度). ...
- 南阳OJ独木舟上的旅行
/*独木舟上的旅行 时间限制:3000 ms | 内存限制:65535 KB 难度:2 描述 进行一次独木舟的旅行活动,独木舟可以在港口租到,并且之间没有区别. 一条独木舟最多只能乘坐两个人 ...
- 南阳oj 语言入门 房间安排
给大家推荐个靠谱的公众号程序员探索之路,大家一起加油 #include<stdio.h> #include<stdlib.h> #include<algorithm& ...
- 南阳oj入门题-A+B Problem
/** A+B Problem 时间限制:3000 ms | 内存限制:65535 KB 难度:0 描述 此题为练手用题,请大家计算一下a+b的值 输入 输入两个数,a,b 输出 输出a+b的值 样例 ...
- 南阳oj入门题-蛇形填数
/** 蛇形填数 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 在n*n方陈里填入1,2,...,n*n,要求填成蛇形.例如n=4时方陈为: 10 11 12 1 9 16 ...
- 南阳oj入门题-数数
/** 数数 时间限制:3000 ms | 内存限制:65535 KB 难度:2 描述 我们平时数数都是喜欢从左向右数的,但是我们的小白同学最近听说德国人数数和我们有些不同,他们正好和我们相反,是从右 ...
最新文章
- 一文详解NDT算法实现
- [CoolStuff]有趣的Zumobi
- GitHub遭攻击滥用以代管网钓套件
- Ocr技术 识别高级验证码
- java动态打印_JFreeChart学习(三)——动态打印java内存使用情况
- 五年级下册电子计算机与多媒体,语文人教版五年级下册《电子计算机与多媒体》.doc...
- 最热门的10个Java微服务框架
- css中margin属性的探究
- 共享计算机管理员权限设置,有共享文件夹。怎么从局域网取得管理员权限
- jmeter-正则表达式提取器
- 用过滤器来解决JSP中文乱码问题
- 前端第二天 表格/表单和H5
- linux那些事之页迁移(page migratiom)
- 专升本英语固定词组搭配500个
- android常用单词,Android的英语单词记忆软件系统
- Blender图解教程:高仿版超级马里奥(三)身体建模(5月7日更新 附模型下载)
- #自动化测试框架的4种有效分类与使用选择
- 完整的十字架(漫画)
- Ubuntu设置仅允许特定用户或特定IP通过ssh访问
- 导出 excel 表格(纯前端)和下载excel 文件
热门文章
- cmd怎么查看当前静态路由_怎么使用cmd设置添加电脑上静态路由
- 量子十问之二:“爱因斯坦幽灵”能用来实现超光速通信吗?
- 如何做好日程管理?实操介绍:不同角色的日程管理方法
- 听说这是互联网时代100本必读书单,你看过几本?
- 超炫酷的Bat脚本入门教程
- [工具使用]黑暗引擎FOFA
- lattice diamond 安装及获取license方法
- 单引号、双引号、三引号用法
- taobao_seckill_anyi项目配置与运行main.py(7)【图文并茂的小白级教程】
- 360自研分布式存储系统Bada的架构设计和应用