过河问题

时间限制: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

这个题要用贪心算法,
一个人的时候没话说
两个人是时间较长的那个人
三个人的时候,先让第一短时间的人带时间最长的过去,时间短的再返回,带第二短的人过去
四个人及其以上的时候,有两种方法时间较短
      1.第一短的带最长的,再回来带第二短的,依次带完
      2.第一短带第二短,第一短回来,把手电给最长和第二长,再让第二短回来
      这两种方法只是送过去两个人
 #include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int time[]; int main()
{
int n,i,b,N;
scanf("%d",&N);
while(N--)
{
scanf("%d",&n);
for(i=;i<n;i++)
{
scanf("%d",&time[i]);
}
sort(time,time+n);
int sum=;
while(n>)
{
if(*time[]+time[]>*time[]+time[n-])
sum+=*time[]+time[n-]+time[n-];
else
sum+=*time[]+time[]+time[n-];
n-=;
}
if(n==)
sum+=time[]+time[]+time[];
if(n==)
sum+=time[];
if(n==) sum += time[];
printf("%d\n",sum);
}
return ;
}

过河问题--nyoj题目47的更多相关文章

  1. nyoj 题目2 括号配对问题

    描述 今天发现了nyoj,如获至宝.准备开刷. 括号配对问题 现在,有一行括号序列,请你检查这行括号是否配对.   输入 第一行输入一个数N(0<N<=100),表示有N组测试数据.后面的 ...

  2. NYOJ题目27水池数目

    --------------------------------------------- 这道题有点坑,也怪我总是有点马虎,按照正常人的思维0是表示有水池啊竟然是1表示有水池,最坑的是写反了竟然还能 ...

  3. NYOJ题目20吝啬的国度

    -----------------------------------------n-1条边的无向连通图是一棵树,又因为树上两点之间的路径是唯一的,所以解是唯一的.(注意并不一定是二叉树,所以最好采用 ...

  4. NYOJ题目28大数阶乘

    -------------------------------------祭出BigInteger AC代码: import java.math.BigInteger; import java.uti ...

  5. NYOJ题目198数数

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAsYAAAK1CAIAAABEvL+NAAAgAElEQVR4nO3drXLkurvv8X0T4bmQYF

  6. NYOJ题目170网络的可靠性

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAs8AAANvCAIAAACte6C6AAAgAElEQVR4nOydPbLcNhOu7yaUayGOZy

  7. NYOJ题目168房间安排

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAssAAAOTCAIAAADGwNmiAAAgAElEQVR4nOy9PY7cyLPufTchXwsZu9

  8. NYOJ题目125盗梦空间

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAssAAANLCAIAAAA4rUfgAAAgAElEQVR4nOydq7LdyrKm+yXM/SDG4y

  9. NYOJ题目124中位数

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAssAAAJUCAIAAABsWvwaAAAgAElEQVR4nO3dPXLjuraG4TsJ5xqIYw

随机推荐

  1. j2ee中request.getQueryString()

    比如发送http://localhost/test.do?a=b&c=d&e=f得到的是a=b&c=d&e=f

  2. 那些我希望在一开始使用 Zsh(oh-my-zsh) 时就知道的

    原文地址:http://segmentfault.com/a/1190000002658335  作者:xavier 自带的插件 其实我用了 oh-my-zsh 快三个月后才知道原来他自带了很多插件没 ...

  3. postgresql创建用户

    (1)内部命令create user 用户名 with superuser password '密码';              先进入数据库后用命令\h create user 查看帮助     ...

  4. kibana 版本kibana-4.3.1 修改地图

    进入到安装目录下的src/ui/public/vislib/visualizations/目录 1.编辑_map.js文件 1 2 //url: 'https://otile{s}-s.mqcdn.c ...

  5. tr 替换删除字符

    1.关于tr    通过使用 tr,您可以非常容易地实现 sed 的许多最基本功能.您可以将 tr 看作为 sed 的(极其)简化的变体:它可以用一个字符来替换另一个字符,或者可以完全除去一些字符.您 ...

  6. 三十一、Java图形化界面设计——布局管理器之GridLayout(网格布局)

    摘自http://blog.csdn.net/liujun13579/article/details/7772491 三十一.Java图形化界面设计--布局管理器之GridLayout(网格布局) 网 ...

  7. Redis 3.0集群 Window搭建方案

    Redis 3.0集群 Window搭建方案 1.集群安装前准备 安装Ruby环境,安装:rubyinstaller-2.3.0-x64.exe http://dl.bintray.com/onecl ...

  8. npm 常用命令详解[转]

    npm是什么 NPM的全称是Node Package Manager,是随同NodeJS一起安装的包管理和分发工具,它很方便让JavaScript开发者下载.安装.上传以及管理已经安装的包. npm ...

  9. 谱聚类--SpectralClustering

    谱聚类通常会先对两两样本间求相似度. 然后依据相似度矩阵求出拉普拉斯矩阵,然后将每一个样本映射到拉普拉斯矩阵特诊向量中,最后使用k-means聚类. scikit-learn开源包中已经有现成的接口能 ...

  10. Java算法简介及排序剖析

    本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 从小白晋升,一路走来:从helloworld,到JFrame,再到Android:从城外小子,到内城 ...