"""
P1880 [NOI1995] 石子合并(python3实现)
https://www.luogu.com.cn/problem/P1880
"""
import math
f=[[2147483647] * 310 for _ in range(310)]
f1=[[-1] * 310 for _ in range(310)]
a=[0]*310
s=[0]*310
n=int(input())
#a.append(0)
b=list( map(int,input().split() ) )
for i in range(n):
a[i+1]=b[i]
#print(a)
#for x in input().split():#列表b里面的数据类型是字符串
# a.append(x)
for i in range(1,n+1):
a[i+n]=a[i]
#print(a)
for i in range(1,2*n+1):
s[i]=s[i-1]+a[i]
for i in range(1,2*n+1):
f[i][i]=0
f1[i][i]=0
for lenx in range(2,n+1):
i=1
while i+lenx-1<=2*n:
j=lenx+i-1
for k in range(i,j):
f[i][j]=min(f[i][k]+f[k+1][j],f[i][j])
f1[i][j]=max(f1[i][k]+f1[k+1][j],f1[i][j])
f[i][j]+=s[j]-s[i-1]
f1[i][j]+=s[j]-s[i-1]
i+=1
ans1=2147483647
ans2=-1
for i in range(n):
ans1=min(ans1,f[i][i+n-1])
ans2=max(ans2,f1[i][i+n-1])
print(ans1)
print(ans2)
参考:
python初始化list列表(1维、2维)
https://www.cnblogs.com/zqifa/p/python-list.html
python中列表list的初始化及增删改查(好)
https://blog.csdn.net/ai_XX/article/details/103300511
python list中append()方法和extend()方法区别
https://www.cnblogs.com/wujingqiao/p/9651992.html
Python 获取最大值函数
https://www.runoob.com/python3/python3-largest-number.html
[python] List添加元素的4种方法
https://blog.csdn.net/weixin_43026262/article/details/105553180
Python 数据的输入
https://www.cnblogs.com/-citywall123/p/11545328.html
python实现将读入的多维list转为一维list的方法
https://www.jb51.net/article/142770.htm
python创建二维列表的两种方法
https://blog.csdn.net/liangjiubujiu/article/details/82153095
python二维列表(list)初始化
https://www.cnblogs.com/Renyi-Fan/p/13217355.html