¡Aprende Python de la muñeca! Registre las preguntas en el proceso de aprendizaje y preparación de pruebas de Blue Bridge Cup Python, y registre cada momento.
Se adjunta una publicación de resumen: Pupils Blue Bridge Cup Python Breakthrough | Summary_COCOgsta's Blog-CSDN Blog
【Descripción】
Organice n pilas de piedras alrededor del patio circular, y ahora las piedras deben combinarse en una pila de manera ordenada. Se estipula que solo se pueden seleccionar dos pilas adyacentes para fusionarse en una nueva pila cada vez, y el número de piedras en la nueva pila se registra como la puntuación de la fusión.
Por favor, escriba un programa para realizar los siguientes cálculos:
Elija un esquema para fusionar piedras de modo que la suma de n-1 puntajes de fusión sea la más pequeña.
Elija un plan para fusionar piedras de modo que la suma de n-1 veces de puntajes fusionados sea la mayor.
【Ingresar descripción】
La primera línea contiene un número entero n, lo que indica que hay n montones de piedras en total. 1≤n≤200
La segunda línea contiene n enteros, que representan respectivamente el número de piedras en cada pila.
【Descripción de salida】
Hay dos líneas de salida:
La primera línea es la suma mínima de puntajes combinados,
La segunda línea es el valor máximo de la suma de puntuación combinada.
【Entrada de muestra】
5
1 4 2 5 3
【Salida de muestra】
34
47
【Explicación del código】
n = int(input())
a = [0]
for i in input().split():
a.append(int(i))
for i in range(1, n+1):
a.append(a[i])
s = [0]
f = [[1061109567 for j in range(201)] for i in range(201)]
g = [[0 for j in range(310)] for i in range(310)]
for i in range(1, 2*n+1):
s.append(s[i-1] + a[i])
f[i][i] = 0
g[i][i] = 0
for len in range(2, n+1):
for l in range(1, 2*n+1):
r = l + len - 1
if r <= 2*n:
for k in range(l, r):
f[l][r] = min(f[l][r], f[l][k] + f[k+1][r] + s[r] - s[l - 1])
g[l][r] = max(g[l][r], g[l][k] + g[k+1][r] + s[r] - s[l - 1])
minv = 1061109567
maxv = 0
for i in range(1, n+1):
minv = min(minv, f[i][i+n-1])
maxv = max(maxv, g[i][i+n-1])
print(minv)
print(maxv)
复制代码
【resultado de la operación】
5
1 4 2 5 3
34
47