#P1435. Rusty String

    ID: 1189 传统题 3000ms 512MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>字符串数学FFT基础算法枚举其他构造CodeForces

Rusty String

题目描述

多组数据,每次给一个由 VK? 三种字符构成的字符串,你需要把所有为 ? 的位置填成 V 或者 K,你要求出所有最终构造出来的字符串里所有可行的周期,我们称 ii 为字符串 SS 的周期当且仅当 SS 向右平移 ii 位之后和原串重叠的部分完全一样,例如 VKKVK,当 i=3i=3 时:

VKKVK
   VKKVK

它们重叠的部分都是 VK,所以 33 是一个周期,同理 55 也是一个周期(重叠部分为空也可以)。

输入格式

第一行一个整数 tt,表示数据组数。

每组数据第一行一个整数 nn,第二行一个长度为 nn,仅由 VK? 组成的字符串。1n5×1051 \le n \le 5 \times 10^5

保证所有字符串总长度不超过 5×1055 \times 10^5

输出格式

对于每组数据,先在一行输出一个数为你求得的所有可行周期的个数,接下来一行按照升序输出所有的可行周期。

3
 
5
V??VK
 
6
??????
 
4
?VK?
2
3 5
6
1 2 3 4 5 6
3
2 3 4