您的位置:首页 > 其它

POJ - 1700 Crossing River【贪心】

2013-07-17 18:57 357 查看
描述: A group of N people wishes to go across a river with only one boat, which can at most carry two persons. Therefore some sort of shuttle arrangement
must be arranged in order to row the boat back and forth so that all people may cross. Each person has a different rowing speed; the speed of a couple is determined by the speed of the slower one. Your job is to determine a strategy that minimizes the time
for these people to get across.
(N个人要过河,但却只有一条船,它最多只能携带两个人。每个人都有不同的划船速度,两个人在船上的速度是由速度最慢的那个人决定的。你的工作是找个最大限度地减少时间的过河方案。)
思路:贪心

实现代码:
#include<stdio.h>
#include<stdlib.h>
int cmp(const void *a,const void *b)
{
return *(int *)a-*(int *)b;
}
int main()
{
int n;
scanf("%d",&n);
while(n--)
{
int m;
scanf("%d",&m);
int a[1001];
for(int i=0;i<m;i++)scanf("%d",&a[i]);
qsort(a,m,sizeof(int),cmp);
int sum=0;
int i=m-1;
if(i==0)sum=a[0];
while(i>0)
{
if(i==1) sum+=a[i];
else if(i==2)sum+=a[0]+a[1]+a[2];
else sum += a[0]*2+a[i]+a[i-1] < a[1]*2+a[0]+a[i] ? a[0]*2+a[i]+a[i-1] : a[1]*2+a[0]+a[i];
i-=2;
}
printf("%d\n",sum);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  贪心 判断