#P15206. [SWERC 2018] Dishonest Driver

    ID: 15254 远端评测题 6000ms 2048MiB 尝试: 0 已通过: 0 难度: 6 上传者: 标签>字符串动态规划 DP2018区间 DPICPC

[SWERC 2018] Dishonest Driver

说明

当你抵达戴高乐机场时,你天真地接受了一位无证司机提供的“有竞争力价格”的搭车前往巴黎。结果是一场灾难:不仅价格极高,而且司机为了让这个价格显得合理,让行程变得比必要长得多。

你注意到了这个骗局,因为你多次经过同一个地方:事实上,你的记忆力非常好,能够清楚地记住你走过的路径,包括那位骗子迫使你绕的每一个圈子。

现在,你在警察局报案投诉这位司机,一位警官要求你讲述你的经历。她甚至要求你提供你所走路径的所有细节。因为你不想再花几个小时做这件事,你决定给出一个压缩版本。

假设你记得你经过了地点 A, B, C, D, A, B, C, D。在这种情况下,你宁愿告诉警官“我走了两遍路径 ABCD”,而不是“我走了路径 ABCDABCD”。由于你的路径重复了相同的地点序列,这将显著缩短你的陈述,而不会遗漏任何细节。

更精确地说,你需要编写一个程序,输入为你经过的地点列表,并返回该路径最短压缩形式的大小。这样的压缩路径可以是以下之一:

  • 一个你经过的单个地点,称为“原子路径”;
  • 两个压缩路径的连接;
  • 一个压缩路径的重复,即 (C)n (C)^n ,表示你连续走了 n n 次由 C C 描述的路径。

压缩路径的大小定义为其中包含的原子路径的数量。

输入格式

输入包含两行:

  • 第一行包含一个整数 N N ,表示路径的长度。
  • 第二行包含路径,描述为一个长度为 N N 的字符串。每个地点由一个字母数字字符描述:可以是数字(从 '0' 到 '9')、小写字母(从 'a' 到 'z')或大写字母(从 'A' 到 'Z')。

输出格式

输出应包含一行,内容为一个整数,表示最短压缩路径的大小。

22
aaabaaabccdaaabaaabccd
4
4
aaba
3

提示

样例解释 1

该路径的最短压缩形式是 (((a)3b)2(c)2d)2 (((a)^3b)^2(c)^2d)^2 。其中包含的原子路径是 a a b b c c d d 。因此,其大小为 4。

样例解释 2

该路径的最短压缩形式是 (a)2ba (a)^2ba 。其中包含的原子路径是 a a b b a a 。因此,其大小为 3。

数据范围

0<N700 0 < N \leq 700

翻译由 DeepSeek 完成