CF383E Vowels
emmm 可以自己想出来的简单题。
就是考虑容斥,也就是 A ∪ B = A + B − A ∩ B A \cup B = A + B - A \cap B A∪B=A+B−A∩B。三个数的情况也是同理。发现每个字符串的长度 = 3 = 3 =3 所以我们可以直接对于集合大小是 3 3 3 的进行暴力容斥计算。
之后我们考虑集合的合并,直接进行状压 D p \tt Dp Dp,我们考虑删除最前面和最后面的那一位的贡献之和减去同时删除的贡献即可。
或者说我们可以考虑更好写的情况。我们发现合法的集合肯定是至少包含其中一个位置的。
对于至少可以通过取补集转换成全部不包含。
对于一个不合法的集合肯定是所有位置都在这里的,那么后者完全可以使用高位前缀