AC. 梦想

frank_c1

[BZOJ 2754] 喵星球的点名

发布于2016年02月09日 | 暂无评论 | 1,799阅读 | 后缀自动机,树状数组

题目描述

a180285幸运地被选做了地球到喵星球的留学生。他发现喵星人在上课前的点名现象非常有趣。

假设课堂上有N个喵星人,每个喵星人的名字由姓和名构成。喵星球上的老师会选择M个串来点名,每次读出一个串的时候,如果这个串是一个喵星人的姓或名的子串,那么这个喵星人就必须答到。 然而,由于喵星人的字码过于古怪,以至于不能用ASCII码来表示。为了方便描述,a180285决定用数串来表示喵星人的名字。

现在你能帮助a180285统计每次点名的时候有多少喵星人答到,以及M次点名结束后每个喵星人答到多少次吗?

1<=N<=20000,1<=M<=50000,喵星人的名字总长和点名串的总长分别不超过100000,保证喵星人的字符串中作为字符存在的数不超过10000。

输入格式

现在定义喵星球上的字符串给定方法:

先给出一个正整数L,表示字符串的长度,接下来L个整数表示字符串的每个字符。

输入的第一行是两个整数N和M。

接下来有N行,每行包含第i 个喵星人的姓和名两个串。姓和名都是标准的喵星球上的字符串。

接下来有M行,每行包含一个喵星球上的字符串,表示老师点名的串。

输出格式

对于每个老师点名的串输出有多少个喵星人应该答到。

在最后一行输出每个喵星人被点到多少次。

题目解析

本来当时学AC自动机时想做这题,但因为种种原因耽搁了。刚学完后缀自动机,然后随手就翻到这道题。

这题的第一问和前面那题[BZOJ 2780] Sevenk Love Oimaster 一样,但是本题数据比较弱,而且时限比较长,所以做法很多,后缀数组、AC自动机等等都是资瓷哒。但我偏偏选个后缀自动机(其实是想偷个懒~),然而并没有发现有谁是用后缀自动机做的。然后第二问发现想不到什么好的做法,于是开始理性的暴力。注意到在统计第一问答案时,我们也可以反过去逐个统计第二问的答案,虽然看起来有些暴力,但是实际效果还是不错的(大概数据确实有点弱)。

在一个细微之处WA了20次,我的一天光阴就纠缠在正确与错误之间了QwQ