蓝桥杯热身训练2.14(python)
P1359 租用游艇
链接: P1359 租用游艇
import sys
n = int(input())
dp = [sys.maxsize]*(n+1)
dp[n]=0
sta = [[0 for _ in range(n+1)] for _ in range(n)]
for i in range(1, n):
a = [i for i in map(int, input().split())]
a.reverse()
for j in range(i+1, n+1):
sta[i][j] = a.pop()
for i in range(n-1, 0, -1):
for j in range(i+1, n+1):
dp[i] = min(dp[i], dp[j]+sta[i][j])
print(dp[1])
P1060 [NOIP2006 普及组] 开心的金明
链接: P1060 [NOIP2006 普及组] 开心的金明
n ,m = map(int, input().split())
price=[]
imp = []
dp=[[0 for _ in range(30001)] for _ in range(25)]
for _ in range(m):
a,b = map(int, input().split())
price.append(a)
imp.append(b*a)
for i in range(m): # 物品
for j in range(n): # 当前钱数
if(j>price[i]):
if j-price[i]>0:
t = j-price[i]
else:
t=0
dp[i][j] = max(dp[i-1][j], dp[i-1][t]+imp[i])
print(dp[m-1][n-1])
P1802 5 倍经验日
链接: P1802 5 倍经验日
n, x = map(int, input().split())
w=[]
l=[]
u=[]
dp=[0 for _ in range(x+1)]
for _ in range(n):
a, b , c = map(int, input().split())
l.append(a)
w.append(b)
u.append(c)
# 遍历对手
for i in range(n):
for j in range(x, u[i]-1, -1):
dp[j] = max(dp[j]+l[i], dp[j-u[i]]+w[i])
for j in range(u[i]):
dp[j]+=l[i]
print(5*dp[x])