题目描述

Just like humans, cows often appreciate feeling they are unique in some way. Since Farmer John’s cows all come from the same breed and look quite similar, they want to measure uniqueness in their names.

Each cow’s name has some number of substrings. For example, “amy” has substrings {a, m, y, am, my, amy}, and “tommy” would have the following substrings: {t, o, m, y, to, om, mm, my, tom, omm, mmy, tomm, ommy, tommy}.

A cow name has a “uniqueness factor” which is the number of substrings of that name not shared with any other cow. For example, If amy was in a herd by herself, her uniqueness factor would be 6. If tommy was in a herd by himself, his uniqueness factor would be 14. If they were in a herd together, however, amy’s uniqueness factor would be 3 and tommy’s would be 11.

Given a herd of cows, please determine each cow’s uniqueness factor.

定义一个字符串的「独特值」为只属于该字符串的本质不同的非空子串的个数。如 “amy” 与 “tommy” 两个串,只属于 “amy” 的本质不同的子串为 “a” “am” “amy” 共 3 个。只属于 “tommy” 的本质不同的子串为 “t” “to” “tom” “tomm” “tommy” “o” “om” “omm” “ommy” “mm” “mmy” 共 11 个。 所以 “amy” 的「独特值」为 3 ,”tommy” 的「独特值」为 11 。

给定 N (

N105N \leq 10^5

) 个字符集为小写英文字母的字符串,所有字符串的长度和小于

10510^5

,求出每个字符串「独特值」。

输入输出格式

输入格式:

The first line of input will contain

NN

(

1N1051 \le N \le 10^5

). The following

NN

lines will each contain the name of a cow in the herd. Each name will contain only lowercase characters a-z. The total length of all names will not exceed

10510^5

.

输出格式:

Output

NN

numbers, one per line, describing the uniqueness factor of each cow.

输入输出样例

输入样例#1: 复制

输出样例#1: 复制

蒟蒻我不会sam只能用学习leoly 用sa来搞

那么针对每个串首先把他们连起来 然后加上分隔符 跑后缀数组 然后得到了按照字典序排序的这个东西 那么我想起了之前一道题 要求求自己这个字符串中本质不同的子串有多少个 可以想到直接n*(n+1)/2-height即可 这个其实可以同理 在自己中出现的只能算一次 如果在其他串中也出现了对答案的贡献就是0 那么我同理 直接减去 就可以了 但是还要注意一点 就是 针对 我一个字串如果他的后缀在sa中是一串连续的区间比如l~r那么我们这儿做之后别忘了加上lcp(l-1,r+1)  因为我相当于针对每个后缀都减掉了他们的lcp 那么是不是减多了 如果上与下匹配是aaa aaaaa 那么是不是这个对答案的贡献还有一个aaa而不是两个 所以要加回来

 

分类: 后缀数组

elijahqi

辣鸡蒟蒻一枚qwq 欢迎加qq qwq 2922945330

发表评论