[BZOJ2754/Luogu2336][SCOI2012]喵星球上的点名(AC自动机)

发布于 2018-03-20  100 次阅读


本文章由SYCstudio或本站其它作者所有,请勿擅自转载

本文链接地址:[BZOJ2754/Luogu2336][SCOI2012]喵星球上的点名(AC自动机)

Description

a180285幸运地被选做了地球到喵星球的留学生。他发现喵星人在上课前的点名现象非常有趣。 假设课堂上有N个喵星人,每个喵星人的名字由姓和名构成。喵星球上的老师会选择M个串来点名,每次读出一个串的时候,如果这个串是一个喵星人的姓或名的子串,那么这个喵星人就必须答到。 然而,由于喵星人的字码过于古怪,以至于不能用ASCII码来表示。为了方便描述,a180285决定用数串来表示喵星人的名字。
现在你能帮助a180285统计每次点名的时候有多少喵星人答到,以及M次点名结束后每个喵星人答到多少次吗?

Tag

AC自动机

解决思路

对点名串建立AC自动机,然后分别把每一个喵星人的姓和名放进去匹配。注意,同一个喵星人的姓和名都匹配的时候只算一次匹配。
另外不好处理的是,由于字符集比较大,也有可能有重复元素,所以要用map存子节点,用id编号标记同样的点名串,避免出现多次转移。

代码

本文章由SYCstudio或本站其它作者所有,请勿擅自转载

本文链接地址:[BZOJ2754/Luogu2336][SCOI2012]喵星球上的点名(AC自动机)


HNCJ OIer