n = int(input())
a = list(map(int,input().split()))
b = list(map(int,input().split()))
s = [0]
cost = [ [0]*(n+1) for _ in range(n+1)]
nums = [ [0]*(n+1) for _ in range(n+1)]
print('a',a)
print('b',b)
s0 = 0
# sum记录累计和
# dp 初始化
MAX = 10**9
dp = [ [ [MAX]*(3) for _ in range(n+1)] for _ in range(n+1)]
print('dp',dp)
for i in range(1,n+1):
s0 = s0+a[i-1]
s.append(s0)
dp[i][i][b[i-1]] = 0 # 代表单独成一堆 所以花费为0
for j in range(i,n+1):
nums[i][j] = j-i+1
for len in range(2,n+1):
for i in range(1,n+1-len+1):
j = i+len-1
for c in range(3):
m = MAX
for k in range(i,j):
if dp[i][k][c]!=MAX and dp[k+1][j][c]!=MAX:
m = min(m,dp[i][k][c]+dp[k+1][j][c] +s[j]-s[i-1])
if m==MAX:
continue
dp[i][j][(c+1)%3]=min(dp[i][j][(c+1)%3],m)
nums[i][j] = 1
cost[i][j] = min(dp[i][j][0],min(dp[i][j][1],dp[i][j][2]))
for k in range(1,n+1):
for i in range(1,k+1):
for j in range(k+1,n+1):
if nums[i][j]>nums[i][k]+nums[k+1][j]:
nums[i][j] = nums[i][k] + nums[k+1][j]
cost[i][j] = cost[i][k] + cost[k+1][j]
else:
if nums[i][j]==nums[i][k]+nums[k+1][j]:
cost[i][j] = min(cost[i][j],cost[i][k]+cost[k+1][j])
print(dp)
print(nums)
print(cost)
print(str(nums[1][n])+' '+str(cost[1][n]))
运行超时怎么办,只能完成一半的测试用例,还可以怎么缩减时间呢?