编程实现:(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
正确答案:参考程序(Python):过河问题。a排序。每次最慢两人过去:策略比较min(a1*2+a[n-1]+a[n-2]和a[0]+2*a[1]+a[n-1])。dp贪心累加。样例1,2,3,4→11。核心:贪心过河。
试卷来源:202310(第15届)蓝桥杯Python编程青少组(选拔赛)真题