python实现历届真题 作物杂交【第十一届】【省赛】【研究生组】

def dfs(u):
    #如果已经培育出来了且不是初始就有的,直接返回培育的天数
    if f[u]:return f[u]
    
    #如果len(f[u]) == 0,则说明是初始就有的种子,则直接返回0,不用处理
    L=len(s[u])
    if L==0:return 0
    
    #以上都不是,则是需要培育的种子
    f[u]=int(2e9)
    for i in range(0,L,2):#会存在两个不同的方案生成同一个编号的种子,例如42 32 14 ,4 31 14,此时s[14] = [42,32,4,31]
        f[u]=min(f[u],max(dfs(s[u][i]),dfs(s[u][i+1]))+max(t[s[u][i]-1],t[s[u][i+1]-1]))
    return f[u]
#map高阶函数介绍参考:https://blog.csdn.net/m0_37882192/article/details/115328761
n,m,k,tar=map(int,input().split())
t=list(map(int,input().split()))
s=[]
f=[]
for i in range(n+1):
    s.append([])
    f.append(0)
a=list(map(int,input().split()))

#将所有能培育C编号的种子入列表,
#表示培育方案有k种,即需要处理k行
while k:
    k-=1
    #如42 32 14 ,4 31 14,则s[C] = [A1,B1,A2,B2],即s[14] = [42,32,4,31],表示有两个方案能培育出14编号种子
    A,B,C=map(int,input().split())
    s[C].append(A)
    s[C].append(B)
print(dfs(tar))
#test 1
# 6 2 4 6
# 5 3 4 6 4 9
# 1 2
# 1 2 3
# 1 3 4
# 2 3 5
# 4 5 6

思路来源:

蓝桥杯官网 试题 PREV-230 历届真题 作物杂交【第十一届】【决赛】【研究生组】【C++】【C】【Java】【Python】四种解法_mb618d1c8a55b34的技术博客_51CTO博客

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
蓝桥杯是中国最大、最具影响力的计算机竞赛之一,每年都吸引了众多的参赛者。其中,Python研究生是针对有一定编程基础和研究能力的大学生群体的比赛。以下是对蓝桥杯14届Python研究生真题的解析。 本届比赛共有三个题目,分别是课程设计、文本处理和乘积关系。这些题目都要求参赛选手运用Python语言的各种特性和库来解决实际问题。 在课程设计题中,参赛选手需要通过读取输入的学生信息和课程信息来进行一系列的操作,例如统计某门课程的参与人数、计算学生的平均总成绩等。这个题目考察了对基本数据结构的使用和操作的熟练度。 在文本处理题中,参赛选手需要对一篇英文文章进行分词、词频统计等操作。这个题目考察了对字符串处理和文本处理的能力,同时也需要选手对Python的字符串操作和正则表达式的使用有一定的了解。 最后一个题目是乘积关系,参赛选手需要在一个给定的矩阵中找出乘积最大的连续子矩阵。这个题目考察了对二维数的处理和算法思维的能力,需要选手能够设计出高效的算法来解决这个问题。 总体来说,蓝桥杯14届Python研究生真题设置合理,既考察了基本的编程能力,又考察了对Python语言特性的理解和应用。选手在解题过程中需要灵活运用各种数据结构、算法和库函数,并且要有良好的编程思维和问题分析能力。参加这样的比赛对于学生们的编程能力的提升和实践经验的积累都有着积极的促进作用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值