Description

你有一个字符串S,一开始为空串,要求支持两种操作
在S后面加入字母C
删除S最后一个字母
问每次操作后S有多少个两两不同的连续子串

Input

一行一个字符串Q,表示对S的操作
如果第i个字母是小写字母c,表示第一种加字母c的操作
如果为-表示删除操作,保证所有删除操作前S都非空
|Q|<=10^5

Output

输出|Q|行,第i行表示i个操作之后S内有多少个不同子串

Sample Input

aba-caba

Sample Output

1
3
5
3
6
9
12
17

HINT

Source

By clj

一开始复杂度没想清楚 yy一下开始写 还拿了bzoj rk1

然而discuss里的数据直接让我跑到24s

正解待填坑  蒟蒻我的做法就是暴力回退 发现每回只删除一个 那么只删除一个 在sam上是可以直接暴力 那么删除多个的情况我们一个一个暴力即可

 


elijahqi

退役了 现在在商院 偶尔打CF,有时有ACM regional也去玩一下

发表评论