#loj5505. 「POI2006 R3」美学的文本 Aesthetic Text
「POI2006 R3」美学的文本 Aesthetic Text
[AdditionalFile5505.zip](file://AdditionalFile5505.zip?type=additional_file)
#5505. 「POI2006 R3」美学的文本 Aesthetic Text
标签: 传统 | 时间限制: 400 ms | 内存限制: 128 MiB |
题目描述
题目译自 XIII OI Olimpiada Informatyczna – III etap Estetyczny tekst
我们来考虑一个由 个单词组成的任意文本,这些单词的编号从 到 。该文本的任意一个划分为 行的方案,都可以用一个数字序列 来表示。其中,编号从 到 的单词位于第一行,编号从 到 的单词位于第二行,以此类推,而编号从 到 的单词则位于最后的第 行。
每个单词都有一个确定的长度(以字符数表示)。编号为 的单词的长度记为 。此外,同一行中任意两个相邻的单词都由一个字符宽度的空格隔开。一行的长度定义为该行所有单词的长度之和,再加上它们之间的空格数。第 行的长度我们记为 。这意味着,如果第 行包含了从编号 到 (含两端)的单词,那么这一行的长度为:
$$\operatorname{line}(w)=\operatorname{length}(i)+\operatorname{length}(i+1)+\ldots+\operatorname{length}(j)+(j-i)$$举个例子,我们来考虑一个由 个单词组成的文本,其长度依次为 ,并将其通过序列 划分为 行。那么,第一行的长度为 ,第二行为 ,第三行为 :
对于一个将给定文本划分为 行的方案,我们将其美学系数定义为由以下公式计算出的数值:
$$|\operatorname{line}(1)-\operatorname{line}(2)|+|\operatorname{line}(2)-\operatorname{line}(3)|+\ldots+|\operatorname{line}(k-1)-\operatorname{line}(k)|$$特别地,如果整个划分只占一行,其美学系数等于 。
美学系数越小,表示该划分方案越美观。我们只考虑那些任意一行的长度都不超过某个给定常数 的划分方案。在所有满足此条件的、将文本划分为任意行数的方案中,我们寻求最美观的划分,即具有最小美学系数的方案。在上面的例子中,该划分的美学系数等于 ,并且当 或 时,这是美学系数的最小值。
请编写一个程序,实现以下功能:
- 从标准输入读取数字 和 以及后续各个单词的长度。
- 在所有任意一行长度均不超过 的划分方案中,找出最小的美学系数。
- 将结果输出到标准输出。
输入格式
输入的第一行包含两个整数 和 ,由单个空格隔开。
输入的第二行也是最后一行,包含 个整数,即后续各个单词的长度,对于 ,满足 ,这些数字由单个空格隔开。
输出格式
输出的第一行且仅一行应包含一个整数:在所有任意一行长度均不超过 的划分方案中,最小的美学系数。
样例 1
输入
6 4
4 3 2 5
输出
3
样例 2
输入
4 2
1 2
输出
0