QOJ.ac

QOJ

Límite de tiempo: 5 s Límite de memoria: 512 MB Puntuación total: 100

#11592. 诗人小 G

Estadísticas

小 G 是一个出色的诗人,经常作诗自娱自乐。但是,他一直被一件事情所困扰,那就是诗的排版问题。

一首诗包含了若干个句子,对于一些连续的短句,可以将它们用空格隔开并放在一行中,注意一行中可以放的句子数目是没有限制的。小 G 给每首诗定义了一个行标准长度(行的长度为一行中符号的总个数),他希望排版后每行的长度都和行标准长度相差不远。显然排版时,不应改变原有的句子顺序,并且小 G 不允许把一个句子分在两行或者更多的行内。在满足上面两个条件的情况下,小 G 对于排版中的每行定义了一个不协调度,为这行的实际长度与行标准长度差值绝对值的 $P$ 次方,而一个排版的不协调度为所有行不协调度的总和。

小 G 最近又作了几首诗,现在请你对这首诗进行排版,使得排版后的诗尽量协调(即不协调度尽量小),并把排版的结果告诉他。

输入格式

输入文件包含多组数据。

第一行包含一个整数 $T$,表示诗的数量,接下来是 $T$ 首诗,这里一首诗即为一组数据。每组数据的第一行包含三个由空格分隔的正整数 $N, L, P$,其中 $N$ 表示这首诗句子的数目,$L$ 表示这首诗的行标准长度,$P$ 的含义见问题描述。从第 2 行开始,每行为一个句子,句子由英文字母、数字、标点符号等符号组成 (ASCII 码 33~127, 但不包含 ‘-’)。

输出格式

对于每组数据,若最小的不协调度不超过 $10^{18}$,则第一行一个数表示不协调度,接下来若干行,表示你排版之后的诗。注意:在同一行的相邻两个句子之间需要用一个空格分开。如果有多个可行解,它们的不协调度都是最小值,则输出任意一个解均可。若最小的不协调度超过 $10^{18}$,则输出 "Too hard to arrange" (不包含引号)。每组数据结束后输出 "--------------------" (不包括引号),共 20 个 "-","-" 的 ASCII 码为 45,请勿输出多余的空行或者空格。

样例

输入样例 1

4
4 9 3
brysj,
hhrhl.
yqqlm,
gsycl.
4 9 2
brysj,
hhrhl.
yqqlm,
gsycl.
1 1005 6
poet
1 1004 6
poet

输出样例 1

108
brysj,
hhrhl.
yqqlm,
gsycl.
--------------------
32
brysj, hhrhl.
yqqlm, gsycl.
--------------------
Too hard to arrange
--------------------
1000000000000000000
poet
--------------------

说明

前两组输入数据中每行的实际长度均为 6,后两组输入数据每行的实际长度均为 4。一个排版方案中每行相邻两个句子之间的空格也算在这行的长度中(可参见样例中第二组数据)。每行末尾没有空格。

评分方法

本题设有部分分,当你的程序对于该测试点内每组数据计算得出的不协调度最小值都正确时,能得到本测试点 70% 的分数。在此情况下,若每组数据的排版方案都合法并且得出的不协调度都与输出的相等,则能得到本测试点剩下 30% 的分数。注意,输出格式错误可能会导致本测试点不得分。

数据范围

总共 10 个测试点,数据范围满足:

测试点 $T$ $N$ $L$ $P$
1 $\le 10$ $\le 18$ $\le 100$ $\le 5$
2 $\le 10$ $\le 2000$ $\le 60000$ $\le 10$
3 $\le 10$ $\le 2000$ $\le 60000$ $\le 10$
4 $\le 5$ $\le 100000$ $\le 200$ $\le 10$
5 $\le 5$ $\le 100000$ $\le 200$ $\le 10$
6 $\le 5$ $\le 100000$ $\le 3000000$ 2
7 $\le 5$ $\le 100000$ $\le 3000000$ 2
8 $\le 5$ $\le 100000$ $\le 3000000$ $\le 10$
9 $\le 5$ $\le 100000$ $\le 3000000$ $\le 10$
10 $\le 5$ $\le 100000$ $\le 3000000$ $\le 10$

所有测试点中均满足句子长度不超过 30。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.