题意简述
你要求有多少个字符串,使得:
- 长度为m
- 包含至少一个给定的单词。会给定个单词。
膜
思路框架
用总共的方案数减去一个单词都不包含的方案数。前面那个是,后面那个在自动机上跑求解。
具体思路
首先,“至少一个”->“总共减去一个都没有”,是一个经典套路。这个不多说。
然后讲讲如何。设表示,长度为,匹配到自动机的第个位置。在建立然后若合法,那么就从转移到。最后的答案是所有的和。
实现注意
- AC自动机别写挂了
- 多开点空间,别怂
代码
1 |
|
LightningUZ 的博客
你要求有多少个字符串,使得:
膜
用总共的方案数减去一个单词都不包含的方案数。前面那个是,后面那个在自动机上跑求解。
首先,“至少一个”->“总共减去一个都没有”,是一个经典套路。这个不多说。
然后讲讲如何。设表示,长度为,匹配到自动机的第个位置。在建立然后若合法,那么就从转移到。最后的答案是所有的和。
1 | #include<bits/stdc++.h> |