题目 1698

字符串匹配

查看题解 ↗GitHub ↗如何评测
题号
1698
时间限制
1000 ms
内存限制
256 MB
标签
字符串
来源
信息学奥赛一本通 · 高手训练篇·二、字符串算法(高手训练)

【题目描述】

对于一个字符集大小为CC的字符串pp,可以将任意两个字符在pp中的位置进行互换,例如p=12321p=12321,交换1、21、2得到2131221312,交换1、41、4得到4232442324,交换可以进行任意次。若交换后pp变成了字符串qq,则成qq与pp是匹配的。 给定两个字符集大小为CC的字符串s、ts、t,求出ss中有多少个连续子串与tt匹配。

【输入】

第一行两个整数T、CT、C,分别表示数据组数和字符集大小,字符用1∼C1\sim C的整数来表示。 对于每组数据:第一行两个整数n、mn、m,分别表示s、ts、t的长度。 第二行n个正整数表示ss。 第三行m个正整数表示tt。

【输出】

对于每组数据,输出包括两行: 第一行一个正整数kk,表示ss中有kk个连续子串与tt匹配。 第二行从小到大输出kk个数,表示ss中与tt匹配的连续子串的首位下标(下标从1开始)。

【输入样例】

文本
3 3
6 3
1 2 1 2 3 2
3 1 3
6 3
1 2 1 2 1 2
3 1 3
6 3
1 1 2 1 2 1
3 1 3

【输出样例】

文本
3
1 2 4
4
1 2 3 4
3
2 3 4

【提示】

【数据规模及约定】 对于10%的数据,满足n,m,C≤1000n,m,C≤1000; 对于另外20%的数据,满足n,m≤105,C≤40n,m≤10^5,C≤40; 对于另外30%的数据,满足n,m,C≤105n,m,C≤10^5; 对于100%的数据,满足1≤n,m,C≤106,T=31≤n,m,C≤10^6,T=3。

数据下载

题目 1698 的公开数据

正在读取文件列表…

常用命令

题目 1698 的 ROJ 命令

以下命令默认使用全局安装的 ROJ Skill,请在终端中直接执行;如果修改过 AGENT_HOME,请将命令中的 ~/.agents 替换为对应目录。