Crossing River

题目链接:http://acm.hust.edu.cn/vjudge/problem/visitOriginUrl.action?id=26251

题意:

N个人希望去过河,但每次只能过两个且要有一个人把船划回来接其他的人;

两个人一起过河所用的时间是两个人中单独过河时间最多的;

求所有人过河所需要的最少的时间。

思路分析:

定义一个装n个人中每个人过河所需要的时间数组a[];并用sort进行从小到大进行排序。

求将最慢的和次慢的运过去所需的最少时间,下面有两种可能使所需时间最短的运送的方法:

1)先让最快的和次快的过去且让最快的回来,后要最慢的和次慢的过去让次快的回来;

这样所需要的时间为a[0]+2*a[1]+a[n-1]

2)让最慢的和最快的过去最快的回来;再让最快的和次慢的过去最快的回来;

这样所需要的时间为2*a[0]+a[n-1]+a[n-2]

将这两种方法所需的时间进行比较。

说明:当只有3个人或更少时不管如何过河所需的时间都是他们单独过河所需的时间的总和。

 #include<iostream>
#include<algorithm>
using namespace std;
const int maxn=;
int main()
{
int i,j,t,n,sum,a[maxn];
cin>>t;
while(t--)
{
j=;sum=;
cin>>n;
for(i=;i<n;i++)
cin>>a[i];
sort(a,a+n);
for(i=n-;i>;i-=)
if(a[]+*a[]+a[i]<*a[]+a[i]+a[i-])
sum=sum+a[]+*a[]+a[i];
else
sum+=*a[]+a[i]+a[i-];
if(i==)
sum=sum+a[]+a[]+a[];
if(i==)
sum=sum+a[];
if(i==)
sum+=a[];
cout<<sum<<endl;
}
return ;
}

Crossing River的更多相关文章

  1. POJ 1700 Crossing River (贪心)

    Crossing River Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 9585 Accepted: 3622 Descri ...

  2. Crossing River(1700poj)

    Crossing River Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 9919   Accepted: 3752 De ...

  3. poj 1700 Crossing River 过河问题。贪心

    Crossing River Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 9887   Accepted: 3737 De ...

  4. poj1700--贪心--Crossing River

    Crossing River Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 12260   Accepted: 4641 D ...

  5. POJ1700:Crossing River(过河问题)

    POJ1700 题目链接:http://poj.org/problem?id=1700 Time Limit:1000MS     Memory Limit:10000KB     64bit IO ...

  6. I - Crossing River

    A group of N people wishes to go across a river with only one boat, which can at most carry two pers ...

  7. 贪心Crossing river

    英文题目: A group of N people wishes to go across a river with only one boat, which can at most carry tw ...

  8. POJ 1700 - Crossing River

    Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 13982   Accepted: 5349 Description A gr ...

  9. ACM学习历程——POJ 1700 Crossing River(贪心)

    Description A group of N people wishes to go across a river with only one boat, which can at most ca ...

随机推荐

  1. C语言中main函数的参数

    转自:http://blog.csdn.net/cnctloveyu/article/details/3905720 我们经常用的main函数都是不带参数的.因此main 后的括号都是空括号.实际上, ...

  2. ARM伪指令,王明学learn

    ARM伪指令 在ARM汇编语言程序中里,有一些特殊指令助记符与指令系统的助记符不同,没有相对应的操作码,通常称这些特殊指令助记符为伪指令,他们所完成的操作称为伪操作.伪指令在元程序中的作用是为完成汇编 ...

  3. leetcode1237

    date: 2015-09-09 20:20:58 Two Sum Given an array of integers, find two numbers such that they add up ...

  4. POJ 1655 Balancing Act 树的重心

    Balancing Act   Description Consider a tree T with N (1 <= N <= 20,000) nodes numbered 1...N. ...

  5. loj 1030概率dp

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1030 思路:一直以来对这种概率题都挺感冒的=.=......还是说一下思路吧,dp[i ...

  6. Portlet简述

    一.Portlet是什么? Portlet是基于java的web组件,由portlet容器管理,并由容器处理请求,生产动态内容.Portals使用portlets作为可插拔用户接口组件,提供信息系统的 ...

  7. hdu 2102 A计划-bfs

    Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission( ...

  8. 使用maven 如何生成源代码的jar包

    http://hw1287789687.iteye.com/blog/1943157

  9. Android自动化测试 - MonkeyRunner(二) 锤子便签测试脚本

    来源于:http://testerhome.com/topics/878 # encoding=utf-8 #导入python中自带的time模块和sys模块,脚本中都要用到它们. import ti ...

  10. three.js正交投影照相机

    照相机又分为正交投影照相机与透视投影照相机 举个简单的例子来说明正交投影与透视投影照相机的区别.使用透视投影照相机获得的结果是类似人眼在真实世界中看到的有"近大远小"的效果(如下图 ...