题意:最短时间来回过河。仅有一艘船,并且每次只能够载两个人,以花费时间较长者为准。
数据:t组案例 每组案例给定人数n和每个人过河时间t;
思路:1.从划船返回时间考虑,即以过河时间最短者为准。这时候返回时间最短,但是对于花费时间较长过河者并没有优化时间消费。
2.希望花费时间比较多的人能够乘同一艘船过河。
算法:贪心。将问题简化为一个个子问题。当n<=3的时候,可以直接输出。然后根据局部最优解,重复比较1和2的时间消费。
#include<stdio.h>
#include<algorithm>
using namespace std;
int a[1010];
int b[1010];
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n;
scanf("%d",&n);
int sum = 0;
for(int i =0;i<n;i++)
{
scanf("%d",&a[i]);
sum+=a[i];
}
sort(a,a+n);
b[1]=a[0];
b[2]=a[1];