传统题 1000ms 512MiB

数组划分

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

题目描述

给定 nn 个整数构成的数组 A=[a1,a2,…,an]A=[a_1,a_2,\ldots,a_n]。

你需要将数组 AA 划分为若干非空连续子段。对于划分得到的某个子段,它的偏差值定义为子段内整数和的平方。划分方案的偏差值定义为所有子段偏差值之和。

你需要最小化划分方案的偏差值。

形式化地,你可以将 AA 划分为若干非空连续子段 A1,A2,…,AkA_1,A_2,\ldots,A_k,使得 A=A1+A2+…+AkA=A_1+A_2+\ldots+A_k,这里的 ++ 代表数组的连接。对于 1≤i≤k1\le i\le k,设数组 Ai=[a1(i),…,ami(i)]A_i=[a_1^{(i)},\ldots,a_{m_i}^{(i)}] 包含 mim_i 个整数。你需要最小化 $\sum_{i=1}^{k}\left(\sum_{j=1}^{m_i}a_j^{(i)}\right)^2$。

输入格式

第一行,一个正整数 nn,表示数组 AA 的长度。

第二行,nn 个整数 a1,a2,…,ana_1,a_2,\ldots,a_n,表示数组 AA。

输出格式

一行,一个整数,表示划分方案偏差值的最小值。

样例 #1

样例输入 #1

4
1 2 -3 4

样例输出 #1

6

样例 #2

样例输入 #2

6
-1 -1 4 -5 -1 4

样例输出 #2

0

提示

【样例解释 1】

把数组划分为 [1][1]、[2][2]、[−3,4][-3,4] 三段,偏差值为 12+22+(−3+4)2=1+4+1=61^2+2^2+(-3+4)^2=1+4+1=6,这是最小的。

【样例解释 2】

整个数组的元素和为 (−1)+(−1)+4+(−5)+(−1)+4=0(-1)+(-1)+4+(-5)+(-1)+4=0,直接作为一段的偏差值就是 02=00^2=0,不可能更小。

【数据范围】

对于 40%40\% 的测试点,保证 0≤ai≤500\le a_i\le 50。

对于所有测试点,保证 1≤n≤20001\le n\le 2000,−100≤ai≤100-100\le a_i\le 100。

GESP202609

未参加
状态
已结束
规则
IOI
题目
12
开始于
2026-9-13 17:15
结束于
2026-9-22 1:15
持续时间
200 小时
主持人
参赛人数
10