1、给定n个整数组成的序列,现在要求将序列分割为m段,每段子序列中的数在原序列中连续排列。如何分割才能使这m段子序列的和的最大值达到最小?
t = int(input())
a = []
m = []
for i in range(0, t):
temp = input().split()
n = int(temp[0])
m_i = int(temp[1])
m.append(m_i)
temp = input().split()
a_i = []
for j in range(0,len(temp)):
a_i.append(int(temp[j]))
a.append(a_i)
for id in range(0, t):
a_i = a[id]
m_i = m[id]
n_i = len(a_i)
dp = [[0 for i in range(0,m_i)] for j in range(0,n_i)]
dp[0][0] = a_i[0]
for i in range(1,n_i):
dp[i][0] = dp[i-1][0] + a_i[i]
for j in range(1,m_i):
for i in range(0,n_i):
minv = -1
for k in range(0,i):
temp = max(dp[i][0]-dp[k][0], dp[k][j-1])
if minv == -1 or temp < minv:
minv = temp