竞赛题解
这套题跟第31期的题几乎一样,所以刷题还是有好处的!题做得越多,说不定哪天就能遇到原题了呢!?😋
题目、最优利润值
你在读的经营课程上,老师布置了一道作业。在一家公司的日常运营中,会对一些商品的价格走势根据一些经验和数据进行预估,并据此进行决策。例如,假设某商品每天的价格都有可能变动,我们要做的就是低买高卖获得最高利润。比如,假设我们预估该商品接下来七天内的价格走势如下:4 1 2 3 6 4 8,那我们采取的最佳策略是在价格1块钱的时候买入,在价格8块钱的时候卖出。为了简化整个过程,我们限定在此周期内只能有一次买入一次卖出,且商品在没有购入前是无法卖出的,即该商品不是期货而是现货。现要求你用程序来实现自动决策。输入一定天数的商品预估价格,自动计算出最优利润值。例如,上面的例子中,最优利润值为8-1=7(简单起见,只考虑0到100000之间的整数价格)。
class Solution:
def __init__(self) -> None:
pass
def solution(self, values):
result = None
min_price = values[0]
max_price = 0
for i in values:
if i < min_price:
min_price = i
now = i - min_price
if now > max_price:
max_price = now
result = max_price
# TODO: 请在此编写代码
return result
if __name__ == "__main__":
values = [int(item) for item in input().strip().split()]
sol = Solution()
result = sol.solution(values)
print(result)
题目、开学趣闻之美食诱惑
小艺酱又开学了,可是在上学的路上总会又各种意想不到的美食诱惑让小艺酱迟到。假设小艺酱家到学校是一个n*n的矩阵。每个格子包含一个诱惑值p,诱惑着小艺,让她迟到。小艺位于矩阵的左上角,学校在矩阵的右下角。小艺想知道自己到达学校所要经历的最小诱惑值是多少?
class Solution:
def __init__(self) -> None:
pass
def solution(self, n, vector):
result = None
dp = [[0] * n for _ in range(n)]
dp[0][0] = vector[0][0]
for i in range(1,n):
dp[i][0] = dp[i-1][0] + vector[i][0]
for j in range(1,n):
dp[0][j] = dp[0][j-1] + vector[0][j]
for i in range(1,n):
for j in range(1,n):
dp[i][j] = min(dp[i-1][j] , dp[i][j-1]) + vector[i][j]
result = dp[n-1][n-1]
return result
if __name__ == "__main__":
n = int(input().strip())
vector = []
for i in range(n):
vector.append([int(item) for item in input().strip().split()])
sol = Solution()
result = sol.solution(n, vector)
print(result)
建议:这次竞赛完赛后,我的竞赛报告打开竟然是空白?!还请官方大大可以修复下这个小BUG。

其次就是,在赛后填写获奖信息的时候,如果不小心填错提交后,不能修改了,希望官方可以增加下修改的机会,以免选手填错信息了!
