#1179. 4.字符串匹配

4.字符串匹配

当前没有测试数据。

4.字符串匹配

题目描述

对于一个字符集大小为CC的字符串PP,我们可以将任意两种字符在PP中的位置进行互换,例如P=abcbaP=abcba,我们交换aabb就变为bacabbacab,交换aadd就变为dbcbddbcbd,交换可以进行任意次。若交换后PP变为了字符串QQ,则我们称QQPP是匹配的。

现在给定两个字符集大小为CC的字符串SSTT,请你求出SS中有多少个连续子串与TT是匹配的。

输入格式

第一行两个整数CaseCase,CC表示数据组数与字符集大小。字符用11~CC的整数来表示。

每组数据第一行两个整数nnmm表示SS的长度与TT的长度。

第二行nn个正整数表示SS

第三行mm个正整数表示TT

输出格式

对于每组数据输出两行。

第一行一个正整数ansans,表示SS中有多少个连续子串与TT匹配。

接下来一行从小到大输出ansans个整数,表示SS中与TT匹配的连续子串的首位置。

数据范围

  • 对于10%10\%的数据:n,m,C1000n,m,C \leq 1000
  • 另有20%20\%的数据:n,m105n,m \leq 10^5C40C \leq 40
  • 另有30%30\%的数据:n,m,C105n,m,C \leq 10^5
  • 对于100%100\%的数据:1n,m,C1061 \leq n,m,C \leq 10^6Case=3Case = 3

样例

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