#P16750. [GKS 2020 #A] Bundling

    ID: 19094 远端评测题 3000ms 1024MiB 尝试: 0 已通过: 0 难度: 6 上传者: 标签>贪心2020字典树 TrieGoogle Kick Start

[GKS 2020 #A] Bundling

题目描述

Pip 有 NN 个字符串。每个字符串仅由 A 到 Z 的字母组成。Pip 希望将这些字符串分成大小为 KK。每个字符串必须恰好属于一个组。

一个组的得分等于该组中所有字符串共享的最长前缀的长度。例如:

  • 组 {RAINBOW, RANK, RANDOM, RANK} 的得分为 22(最长前缀为 “RA”)。
  • 组 {FIRE, FIREBALL, FIREFIGHTER} 的得分为 44(最长前缀为 “FIRE”)。
  • 组 {ALLOCATION, PLATE, WORKOUT, BUNDLING} 的得分为 00(最长前缀为 “”)。

请帮助 Pip 将字符串分成大小为 KK 的组,使得各组得分之和最大。

输入格式

输入的第一行给出测试用例的数量 TT。接下来有 TT 个测试用例。每个测试用例的第一行包含两个整数 NNKK。随后 NN 行,每行包含 Pip 的一个字符串。

输出格式

对于每个测试用例,输出一行,格式为 Case #x: y,其中 xx 是测试用例编号(从 11 开始),yy 是可能的最大得分之和。

2
2 2
KICK
START
8 2
G
G
GO
GO
GOO
GOO
GOOO
GOOO
Case #1: 0
Case #2: 10

1
6 3
RAINBOW
FIREBALL
RANK
RANDOM
FIREWALL
FIREFIGHTER
Case #1: 6

提示

在样例 #1 中,Pip 可以通过以下分组获得总分 00

  • {KICK,START}\{\text{KICK}, \text{START}\},得分为 00

在样例 #2 中,Pip 可以通过以下分组获得总分 1010

  • {G,G}\{\text{G}, \text{G}\},得分为 11
  • {GO,GO}\{\text{GO}, \text{GO}\},得分为 22
  • {GOO,GOO}\{\text{GOO}, \text{GOO}\},得分为 33
  • {GOOO,GOOO}\{\text{GOOO}, \text{GOOO}\},得分为 44

限制条件

1T1001 \le T \le 100

2N1052 \le N \le 10^5

2KN2 \le K \le N

KK 能整除 NN

Pip 的每个字符串至少包含一个字符。

每个字符串仅由 A 到 Z 的字母组成。

测试集 1

Pip 的每个字符串至多包含 55 个字符。

测试集 2

所有测试用例中 Pip 的字符串的总字符数不超过 2×1062 \times 10^6

翻译由 DeepSeek V4 Pro 完成