测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A33759. 编程实现:(P1809 过河问题)小青要赶 N (2<N<100) 匹小马过河,N 匹小马过河都需要一定的时间(分钟),小青每次过河最多能赶两匹小马 (骑一并赶一匹),返回时需骑一匹,每次过河的时间为走的慢的小马花费的时间。请计算至少需要多长时间才能把 N 匹小马全部赶过河。例如: N = 4,4 匹小马过河需要的时间分别为 1,2,3,4 (单位: 分钟)。用时最少的一种过河方式:第一次:赶 …

填空题 困难

题目描述

编程实现:(P1809 过河问题)

小青要赶 N (2<N<100) 匹小马过河,N 匹小马过河都需要一定的时间(分钟),小青每次过河最多能赶两匹小马 (骑一并赶一匹),返回时需骑一匹,每次过河的时间为走的慢的小马花费的时间。请计算至少需要多长时间才能把 N 匹小马全部赶过河。

例如: N = 4,4 匹小马过河需要的时间分别为 1,2,3,4 (单位: 分钟)。

用时最少的一种过河方式:

第一次:赶 1 分钟和 2 分钟的小马过河,然后骑 1 分钟的小马返回,共花费 3 分钟 (过去花费 2 分钟,回来花费 1 分钟)

第二次:赶 3 分钟和 4 分钟的小马过河,然后骑 2 分钟的小马返回,共花费 6 分钟 (过去花费 4 分钟,回来花费 2 分钟)

第三次: 赶 1 分钟和 2 分钟的小马过河,共花费 2 分钟 (过去花费 2 分钟)

总共最少花费的时间是 11 分钟(3+6+2=11)

输入说明

两行整数,第一行表示总共有多少匹马 N(2<N<100),第二行表示每匹马过河所需要的时间,数字之间以英文逗号隔开

输出说明

一行一个整数,表示将所有马儿赶过河所需要的最短时间

输入样例

4

1,2,3,4

输出样例

11

参考答案

m = int(input()) a = list(map(int,input().split(','))) ans = 0 a.sort() while m>=4: ans += min(a[0]+a[1]*2+a[m-1], a[0]*2+a[m-2]+a[m-1]) m -=2 if m ==3: ans +=a[0]+a[1]+a[2] if m==2: ans += a[1] if m==1: ans += a[0] print(ans)
上一题 下一题