题库/YBT00353

#YBT00353. 字符串匹配

    传统题 难度: 提高 标签>一本通参数化匹配前驱距离失配窗口
时间限制1000 ms
内存限制256 MiB
通过率100%1 / 1 次提交
题目描述 查看题解 开始编程Alt+E

YBT00353 · 字符串匹配

退出在线编程模式
提高 读懂题意,让每一次思考成为成长。
时间限制1000 ms
内存限制256 MiB
通过率100%1 / 1 次提交

题目描述

对于一个字符集大小为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。

评测数据说明

本题使用按题意独立构造、以独立程序核对的训练数据及公开样例,共8个测试点,非原站或官方原始数据。总分100分。

题目信息

#1781
100%

1 次通过 · 1 次提交

练习难度 提高
时间限制
1000ms
内存限制
256MiB
上传者