#P2119. God of the Vile Baskers

    ID: 1120 远端评测题 20000ms 64MiB 尝试: 1 已通过: 0 难度: 10 上传者: 标签>字符串哈希和哈希表其他双指针扫描CTU Open 2004

God of the Vile Baskers

本题没有可用的提交语言。

问题定义与要求解析

一、核心概念:字母排列上的k相同

若两个字符串S1S_1S2S_2满足以下条件,则称它们在字母排列上是k相同的

  1. S1S_1S2S_2均以字母字符(aa-zzAA-ZZ)开头和结尾。
  2. S1S_1S2S_2恰好包含kk个字母字符。
  3. 对任意字母字符ccS1S_1cc的出现次数与S2S_2cc的出现次数相同(不区分大小写)。

二、输入与输出说明

输入格式 输出格式
1. 整数kk1k501 \leq k \leq 50
2. 字符串TT(长度100000\leq 100000,可能包含非字母字符)
3. 以00结束输入
对每个实例,输出最长前缀PP的长度,使得PP中不存在满足“字母排列上k相同”的两个子字符串

三、示例解析

输入数据:

4  
a'B'C'd'x'a'b'c'd  
4  
abcdabcd  
0  

输出数据:

16  
4  
  • 第一个示例解析
    字符串前缀长度为16时,其中不存在两个满足条件的子串;若继续延长前缀,可能出现字母排列相同的子串。
  • 第二个示例解析
    前缀长度为4时,子串"abcd"仅出现一次;当长度为5时,子串"abcd"和"bcda"(假设存在)可能因字母频率相同被判定为k相同,故最长前缀为4。

四、关键处理逻辑

  1. 字母字符处理:忽略大小写,仅统计字母字符的频率。
  2. 子串条件筛选:子串必须以字母开头和结尾,且恰好包含kk个字母字符。
  3. 重复检测:通过频率组合判断是否存在重复的字母排列子串。