题意 ; 给出一个长度为 的字符串 , 次询问
有多少个子串在重排后可能形成回文串。
,字符集为小写英文字母。时限 ,空限 。
考虑一个字符串重排后可能形成回文串的充要条件:出现次数为奇数的字符个数
。
记 表示前缀
的各个字符出现次数的奇偶性,压成一个 位的二进制数。
使用莫队,当区间 时,答案变化量为:
满足
的二进制数只有
个。再用桶维护每个二进制数出现的次数即可支持 查询。
这个桶的大小为
,有点太大了。本质不同的修改只有 种,询问只有
种,使用离散化即可节省空间。
接着使用二次离线莫队。
考虑如何
查询。我们将修改向能贡献到的查询连边,可以证明去重之后,每个修改只会对应
个查询。
这样,我们让修改主动贡献,即可 修改, 查询。
复杂度 。