文章目录

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

F .成绩统计

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

代码:

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.单词分析

Python【2020蓝桥杯省赛第二场编程】_数字三角形_02

代码:

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.数字三角形

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

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.平面切分

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

代码:

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.装饰珠

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

代码:

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的时间复杂度。求大佬教诲!