#P14719. [RMI 2025] Cheap AI

    ID: 16520 远端评测题 2000ms 2048MiB 尝试: 0 已通过: 0 难度: 8 上传者: 标签>2025交互题分治哈希 hashing后缀数组 SARMI(罗马尼亚)

[RMI 2025] Cheap AI

题目描述

给定一个数 KK 和一个由英文小写字母组成的字符串 SS,选择一个非空串 tt,满足 1tK1 \le |t| \le K,将 ttSS 中出现的位置(选择若干个且互不重叠)替换为特殊字符 #,使得得到的最终字符串的长度最小。

求出这个最小长度。

实现细节

你需要实现下列函数:

int solve(int K, std::string S);

这个函数接收 KKSS 作为参数,需要求出在把一个长度不超过 KK 的所选 token 的若干次出现(互不重叠)替换为特殊字符 # 之后得到的字符串的最小长度。

输入格式

见「实现细节」。

输出格式

见「实现细节」。

5 
aabaabacbbaabaa
7
8 
aaaaaaaaaaaaaaaaaaa
4

提示

样例解释

  • 样例一解释:我们选择 t=aabaat = \texttt{aabaa},于是 SS 变为 #bacbb#\texttt{\#bacbb\#}(长度为 7)。
  • 样例二解释:我们选择 t=aaaaaat = \texttt{aaaaaa},于是 SS 变为 ###a\texttt{\#\#\#a}(长度为 4)。

约束

  • 1KS2000001 \le K \le |S| \le 200\,000
  • SS 由英文小写字母组成。
# 分值 限制
11 55 Si=aS_i = \texttt{a}
22 77 S100\vert S\vert \le 100
33 1212 S5000\vert S\vert \le 5000
44 4040 S75000\vert S\vert \le 75\,000
55 3636 S200000\vert S\vert \le 200\,000