poj 1700

Posted 一个_小菜鸟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了poj 1700相关的知识,希望对你有一定的参考价值。

http://poj.org/problem?id=1700

题目大意就是一条船,有N个人需要过河,求N个人最短过河的时间

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

因为最短的只有两种方案,也就是①最短的和次短的过去,然后最短的回来,然后最长的和次长的过去,次短的回来

②最短的和最长的过去,最短的回来,最短的和次长的过去,最短的回来,比较两种方法的时间,选择最好的一种方案

,但这种方案只适合于3人以上的,所以,但人数少于等于3人时,要另外列出,3人时,时间最短也就是最短和最长去,最短回来,然后最短和次短过去

2人时,也就是直接最短和次短过去,1人时,也就只剩下最短了,时间都确定了

 

以上是关于poj 1700的主要内容,如果未能解决你的问题,请参考以下文章

poj-1700 crossing river

POJ-1700 Crossing River

poj1700 Crossing River

poj1700真正感受到贪心的力量

POJ 1700 cross river (数学模拟)

POJ1700----Crossing River