列表

详情


NC50623. JOJO

描述

JOJO的奇幻冒险是一部非常火的漫画。漫画中的男主角经常喜欢连续喊很多的「欧拉」或者「木大」。
为了防止字太多挡住漫画内容,现在打算在新的漫画中用x欧拉或者x木大表示有x个欧拉或者木大。
为了简化内容我们现在用字母表示喊出的话。
我们用数字和字母来表示一个串,例如:2 a 3 b表示的串就是aabbb
一开始漫画中什么话都没有,接下来你需要依次实现n个操作,总共只有2种操作:
  • 第一种:1 x c:在当前漫画中加入x个c,表示在当前串末尾加入x个c字符。保证当前串是空串或者串尾字符不是c;
  • 第二种:2 x:觉得漫画没画好,将漫画还原到第x次操作以后的样子,表示将串复原到第x次操作后的样子,如果x=0则是将串变成空串。如果当前串是bbaabbb,第4次操作后串是bb,则2 4会使bbaabbb变成bb,
保证x小于当前操作数。众所周知空条承太郎十分聪明,现在迪奥已经被打败了,他开始考虑自己的漫画中的一些问题:
对于一个串的每个前缀A,都有一个最长的比它短的前缀B与前缀A的一个后缀匹配,设这个最长的前缀B的长度为L。L为0时意味着B是一个空串。
每一次操作后,你都需要将当前的串的所有前缀的L求和并对998244353取模输出告诉空条承太郎,好和他的白金之星算出的答案对比。比如bbaaabba的L分别是0,1,0,0,0,1,2,3,所以对于这个串的答案就是7。

输入描述

第一行包括一个正整数n,表示操作数量。
接下来n行每行包含一个操作,操作格式如题目描述所示,例如:
1 x c
2 x
保证数据合法。

输出描述

仅包含n行,第i行一个整数,表示i个操作之后串的答案。

示例1

输入:

11
1 2 a
1 3 b
1 2 a
1 1 b
2 2
1 3 a
1 2 b
2 6
2 5
1 7 a
1 5 c

输出:

1
1
4
7
1
6
13
6
1
14
14

说明:

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

上一题