E. Side Transmutations
题意:
给一个字符集A,考虑所有长度为n的字符串S,里面所有的字符都来自于字符集A,再给出m个参数b[1]~b[m],定义一种改变字符串S的操作为按顺序执行如下内容:
- 从b[]里选一个当k
- 把S的前k个字符和后k个字符分别倒置,然后交换位置
定义两个字符串等价,当且仅当一个字符串能经过若干次上述操作后变成另一个字符串
统计有多少个本质不同的字符串,答案模998244353
思路:
考虑进行5次上述操作的操作序列为{b[1], b[4], b[5], b[6], b[4]},可以手推发现它和操作序列{b[1], b[5], b[6]} 等价,也就是说操作序列中如果同一个bi出现两次,那么这两次操作可以抵消,除此之外还会发现操作与顺序无关
那么根据Bunside引理
可以得出|G| = 2^m,也就是b[]的所有不同集合都是一个置换
然后上面公式求就可以了,可以依次算出每个b[i]对不动点的个数的贡献,具体见代码
#include
#include
#include
#include