2018-02-25

三、贪心算法

1、贪心算法是指,在对 问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部 最优解。

2、贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择,选择的贪心策略必须具备无后效性,即某个状态以前的过程不会影响以后的状态,只与当前状态有关。

一群人想要过河,只有一条船,最多能载两个人。因此,必须安排某种航天飞机的安排,以便使船来回往返,以便所有人都能过马路。每个人都有不同的划船速度;一对夫妇的速度是由慢速的速度决定的。你的工作是确定一种策略使这些人的时间减少到最小

输入:

输入的第一行包含一个整数T(1小于=T小于=20),测试用例的数量。然后T情况跟进。每一种情况的第一行包含N,第二行包含N个整数,为每个人提供了跨越这条河的时间。不会有超过1000人,没有人会超过100秒。

输出:

对于每一个测试用例,打印一条包含所有N人穿越河流所需的秒数的线。

      尽可能让过河时间比较长的两个一起过河,我们不妨假设每个人的过河时间是A_1,A_2,......,A_N。N=1,2,3都是平凡情况容易直接求解,只考虑N>=4这个时候,我们关Sample的构造可以看成是Step1-Step5是一个周期,放到对岸,总共花费时间是:2*A_2+A_1+A_N而问题转化为N-2阶的同类型问题。,而A_n是无论如何要过河的,不妨就设为先过A_n-1如果不参与这个四人组过河的话,到后来他的过河时间一定要算进总时间的……那么现在过肯定有利。故贪心法成立

你可能感兴趣的:(2018-02-25)