Python【2020蓝桥杯省赛第二场编程】

Python【2020蓝桥杯省赛第二场编程】

F .成绩统计

在这里插入图片描述

代码:
n, youxiu, jige= int(input()), 0, 0
for i in range(0,n):
    x = int(input())
    if x >= 60:
        jige += 1
    if x >= 85:
        youxiu += 1
print(int(jige * 100 / n + 0.5),end='%\n')
print(int(youxiu * 100 / n + 0.5),end = '%')

G.单词分析

在这里插入图片描述

代码:
s, d = input(), dict()
for i in s:
    if i in d:
        d[i] += 1
    else:
        d[i] = 1
ans = ['a',0]
for i in d:
    if d[i] > ans[1]:
        ans = [i,d[i]]
    elif d[i] == ans[1] and i < ans[0]:
        ans = [i,d[i]]
print(ans[0] + '\n' + str(ans[1]))

H.数字三角形

在这里插入图片描述

n, dp = int(input()), []
for i in range(0,n):
    dp.append(list(map(int,input().split())))
for i in range(1,n,1):
    for j in range(0,i + 1,1):
        if j == 0:
            dp[i][j] += dp[i - 1][j]
        elif i == j:
            dp[i][j] += dp[i - 1][j - 1]
        else:
            dp[i][j] += max(dp[i - 1][j - 1],dp[i - 1][j])
# 输出满足往左下和往右下的差值不超过1的情况的最大值
print(max(dp[n - 1][(n - 1) // 2:(n) // 2 + 1]))

I.平面切分

在这里插入图片描述

代码:
n, line, ans, s = int(input()), set(), 2, set()
for i in range(0, n):
    k, b = map(int, input().split())
    if (k, b) not in line:
        line.add((k, b))
line = list(line)
for i in range(1,len(line)):
    s.clear()
    flag = 0
    k1, b1 = line[i]
    for j in range(0, i):
        k2, b2 = line[j]
        if k1 == k2:
            continue
        x = (b2 - b1) / (k1 - k2)
        y = (k1 * b2 - k2 * b1) / (k1 - k2)
        if (x,y) not in s:
            s.add((x, y))
    ans += len(s) + 1
print(ans)

J.装饰珠

在这里插入图片描述

代码:
kong, zhu, dp = [0], [[0]], [0] * 305   # 用来存储所有孔的等级和珠子的信息
for i in range(0,6): # 输入所有的孔的等级
    x = list(map(int,input().split()))
    kong.extend(x[1:])
m = int(input())    # 珠子的种数
for i in range(0,m):
    zhu.append(list(map(int,input().split())))
kong.sort()
zhu.sort()
for i in range(1,m + 1):                    # 遍历每种珠子
    for j in range(len(kong) - 1, 0, -1):   # 对每一种珠子,都dp更新
        for k in range(1,zhu[i][1] + 1):    # 遍历每种珠子的每种组合方式
            p = j - k + 1
            if p >= 1 and kong[p] >= zhu[i][0]:
                dp[j] = max(dp[j],dp[p - 1] + zhu[i][k + 1])
            else:
                break
print(max(dp))

这个题我不知道为什么Python怎么都只能得60分,时间超限,蓝桥官网给了5秒,竟然过不去2e7的时间复杂度。求大佬教诲!

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Alan_Lowe

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值