题目名称 | 2996. [POJ 2176]折叠字符串(Folding) |
---|---|
输入输出 | folding.in/out |
难度等级 | ★★☆ |
时间限制 | 1000 ms (1 s) |
内存限制 | 256 MiB |
测试数据 | 41 |
题目来源 | syzhaoss 于2018-10-15加入 |
开放分组 | 全部用户 |
提交状态 | |
分类标签 | |
查看题解 | 分享题解 |
通过:4, 提交:5, 通过率:80% | ||||
lihaoze | 100 | 0.000 s | 0.00 MiB | C++ |
yuan | 100 | 0.000 s | 0.00 MiB | C++ |
yuan | 100 | 0.000 s | 0.00 MiB | C++ |
Lixj | 100 | 0.000 s | 0.00 MiB | C++ |
yuan | 36 | 0.000 s | 0.00 MiB | C++ |
本题关联比赛 | |||
EYOI与SBOI开学欢乐赛13th |
关于 折叠字符串(Folding) 的近10条评论(全部评论) |
---|
中中正在试图用折叠重复子串的方式,紧凑地表示由大写字母 $A$ 到 $Z$ 组成的字符串。
例如,表示字符串 $AAAAAAAAAABABABCCD$ 的一种方式是 $10(A)2(BA)B2(C)D$。
他通过以下方式定义了折叠的字符串以及它们的展开变换:
$1$.包含单个字符的字符串被认为是折叠字符串,展开它得到的字符串为它本身。
$2$.如果 $S$ 和 $Q$ 是两个折叠字符串,并且 $S$ 可以展开得到 $S′$,$Q$ 可以展开得到 $Q′$,则认为 $SQ$ 也是一个折叠字符串,并且 $SQ$ 展开得到 $S′Q′$。
$3$.如果 $S$ 是折叠字符串,则 $X(S)$ 也是折叠字符串,其中 $X$ 为大于 $1$ 的整数。如果 $S$ 展开得到 $S′$,则 $X(S)$ 展开得到 $X$ 个 $S′$。
根据定义可以展开任意给出的折叠字符串,现在给出原字符串,请你将它折叠,并使得折叠字符串包含尽可能少的字符数。
输入文件包含一个由 $L$ 个大写字母构成的字符串。
输出文件包含字符数最少的折叠字符串,如果答案不唯一则任意输出一个即可。
AAAAAAAAAABABABCCD
9(A)3(AB)CCD
其中 $7$ 组数据,$1 \leq L \leq 5$;
其中 $16$ 组数据,$1 \leq L \leq 15$;
其中 $12$ 组数据,构成输入字符串的集合中只有 $1$ 个大写字母;
对于 $100\%$ 的数据,$1 \leq L \leq 100$;