SP15576 STC09 - Aesthetic Text

题目描述

有一个由 $N$ 个单词组成的文本,这些单词按照顺序编号为 1 到 $N$。我们可以将这个文本分解成 $K$ 行,用一个数列 $(a_1, a_2, \ldots, a_{K-1})$ 来表示:从第 1 个单词到第 $a_1$ 个单词构成第一行,从第 $a_1+1$ 到第 $a_2$ 个单词构成第二行,依此类推,直到第 $K$ 行的最后单词。 每个单词有一个长度(字符数),用 $\text{length}(x)$ 表示第 $x$ 个单词的长度。同一行中,相邻的单词之间有一个长度为一个字符的空格。我们定义某一行的长度为该行所有单词长度的总和,再加上单词间空格的数量。用 $\text{line}(w)$ 表示第 $w$ 行的长度,如果第 $w$ 行从第 $i$ 个单词到第 $j$ 个单词,就有: \[ \text{line}(w) = \text{length}(i) + \text{length}(i+1) + \cdots + \text{length}(j) + (j - i) \] 举个例子,假设文本由 4 个单词组成,长度分别为 4、3、2 和 5,并且分解成 3 行,分解方式是 $(1, 3)$。那么这些行的长度分别是:第一行 4、第二行 6、第三行 5: ``` XXXX (第 1 行) XXX XX (第 2 行) XXXXX (第 3 行) ``` 我们定义美学系数为各行长度差绝对值之和,即: \[ |\text{line}(1) - \text{line}(2)| + |\text{line}(2) - \text{line}(3)| + \cdots + |\text{line}(K-1) - \text{line}(K)| \] 如果分解只有一行,美学系数为 0。显然,美学系数越小,分解就越美观。 我们只考虑所有行的长度均不超过某一常数 $M$ 的分解,并在这些分解中找到美学系数最小的方案。对于示例中的分解,美学系数是 3,而在 $M = 6$ 和 $M = 7$ 时,这就是最小的美学系数。 ### 你的任务: 编写一个程序: - 从标准输入读取整数 $N$ 和 $M$,以及每个单词的长度, - 计算每一行长度不超过 $M$ 的所有分解中美学系数的最小值, - 将结果输出到标准输出。 ### 输入格式: 第一行含有两个整数 $N$ 和 $M$,表示单词个数和行长度上限。第二行包含 $N$ 个整数,表示各个单词的长度。 ### 输出格式: 输出一个整数,表示符合条件的分解中最小的美学系数。 ### 数据范围与提示: - $1 \le N \le 2000$ - $1 \le M \le 1000000$ - 每个单词的长度满足 $1 \le \text{length}(i) \le M$ ### 示例: 对于输入: ``` 6 4 4 3 2 5 ``` 输出应为: ``` 3 ``` 对于另一个输入: ``` 4 2 1 2 ``` 输出应为: ``` 0 ``` **本翻译由 AI 自动生成**

输入格式

输出格式